【问题】在新建一个表的时候,初始化一个 timestamp 为 '0000-00-00 00:00:00' 时:
-
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'
【解决方法】:
去掉 sql_mode 中的 values: NO_ZERO_IN_DATE,NO_ZERO_DATE 即可:
show variables like 'sql_mode';
修改 sql_mode:
-
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)
查看修改的结果:
show variables like 'sql_mode';
这个时候再执行建表命令,就正常了:)