网站首页 文章专栏 MySQL Procedure execution failed 1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'tmp_field_1' at row 1
问题:
使用存储过程要查询数据录入迁移到新创建的表时,执行出现错误rocedure execution failed 1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'tmp_field_1' at row 1。
原因:
官方文档上说明MySQL允许将’0000-00-00’保存为“伪日期”,但是MySQL有一个NO_ZERO_DATE SQL模式,这个模式默认是打开的,不允许产生伪日期,所以要关掉这个选项。
解决办法流程:
1、查看关于sql_mode的变量
select @@global.sql_mode;
如我的:
原 sql_mode : STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2、删除去掉 NO_ZERO_IN_DATE,NO_ZERO_DATE
删除 NO_ZERO_IN_DATE,NO_ZERO_DATE 变成 如下: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
示例:
select @@global.sql_mode; SET GLOBAL sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; SET SESSION sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';