1292 - Incorrect datetime valuemysql插入非法的时间数据解决方案

1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'targetTime' at row 1 的解决方案

前言

由于测试需要,需要在mysql中插入0000-00-00 00:00:00这种非法数据。实际报错:1292 - Incorrect datetime value

错误原因

’0000-00-00’保存为“伪日期”,但是MySQL有一个NO_ZERO_DATE SQL模式,这是mysql5.7版本以后出现的(具体是版本问题引起的),这个模式默认是打开的,不允许产生伪日期,所以要关掉这个选项。执行SQL语句:

解决办法

查看全局sql_mode:

select @@global.sql_mode;#可以看到NO_ZERO_DATE SQL

修改全局sql_mode:

set @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

查看是否存在查看关于sql_mode的变量:

show variables like '%sql_mode%';#如果没有NO_ZERO_IN_DATE和NO_ZERO_DATE就说明修改成功

刷新你的表和数据库net start mysql(navicat直接刷新即可)

结果

这样就可以愉快的插入非法数据了

9998-11-30 00:00:00

0000-00-00 00:00:00

你可能感兴趣的:(1292 - Incorrect datetime valuemysql插入非法的时间数据解决方案)