语句a:`start_time` TIMESTAMP NOT NULL COMMENT '秒杀开始时间',
语句b:`stime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '开始时间'
mysql5.7以下,这两种写法写法都会报错
将自动分配DEFAULT '0000-00-00 00:00:00'(零时间戳),但是mysql5.7以后是严格模式,这不满足sql_mode中的NO_ZERO_DATE而报错。
注:sql_mode有两种,一种是空值,一种是严格模式,会给出很多默认设置。在MySQL5.7之后默认使用严格模式。
NO_ZERO_DATE:若设置该值,MySQL数据库不允许插入零日期,插入零日期会抛出错误而不是警告。
解决方案 SET SQL_MODE = 'ALLOW_INVALID_DATES';
或者下面的链接也不错:
https://www.cnblogs.com/jinjiyese153/p/7300510.html
修改方法:
例如语句a:SET SQL_MODE = 'ALLOW_INVALID_DATES';
或者
首先用下面的命令看下sql_mode
show variables like 'sql_mode';
ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
如果结果中含有NO_ZERO_IN_DATE
, NO_ZERO_DATE
则执行下面的命令:
set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'