【问题】在新建一个表的时候,初始化一个 timestamp 为 '0000-00-00 00:00:00' 时:segmentfault
CREATE TABLE `test` (
`created_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`last_updated_on` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;报错:
ERROR 1067 (42000): Invalid default value for 'last_updated_on'
【解决方法】:session
去掉 sql_mode 中的 values: NO_ZERO_IN_DATE,NO_ZERO_DATE 便可:
spa
show variables like 'sql_mode';
修改 sql_mode:
code
set session
sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';Query OK, 0 rows affected, 1 warning (0.00 sec)
查看修改的结果:
blog
show variables like 'sql_mode';
这个时候再执行建表命令,就正常了:)get