现在是少女时代,以后是少女时代,永远是少女时代!
sone :少时的假粉丝

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';


琼ICP备16001221号-1