导入数据提示SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'created_at'

  • Simon 发布于 2017-03-11
  • 栏目: mysql
  • 3516人围观
  • 0评论

今天Simon在导入Mysql数据的时候,导入失败,提示

SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'created_at'


源数据机器MYSQL版本是5.7,目标机器MYSQL版本也是5.7,为什么导出的数据无法在另一台机器上导入?猜想是Mysql配置的问题,查证后确定是mysql配置项sql_mode中的NO_ZERO_IN_DATE和NO_ZERO_DATE导致的问题。


NO_ZERO_DATE:在非严格模式下,可以插入形如“0000-00-00 00:00:00”的非法日期,MySQL数据库仅抛出一个警告。而启用该选项后,MySQL数据库不允许插入零日期,插入零日期会抛出错误而非警告。


NO_ZERO_IN_DATE:在严格模式下,不允许日期和月份为零。如“2011-00-01”和“2011-01-00”这样的格式是不允许的。采用日期或月份为零的格式时MySQL都会直接抛出错误而非警告。


解决办法:

打开mysql配置文件,修改其中的sql_mode选项值,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE,重启mysql,问题解决。

如果配置文件中没有sql_mode选项,则需要进入mysql,输入

show variables like 'sql_mode';

复制value,然后在mysql配置文件中手动加上 sql_mode="复制的value" ( 记得要去掉 NO_ZERO_IN_DATE,NO_ZERO_DATE )。

重启mysql

标签: phpmysqllaravel

评论

  • 火星人 (2017-04-10 23:01:13) 说:
    'baidu.com'