mysql :Error : Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
一个表中出现多个timestamp并设置其中一个为current_timestamp的时候经常会遇到这个错误
例子:
CREATE TABLE `leyangjun_test` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`msg` VARCHAR(256),
`ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`ts_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
以上这会报类似错误
换成这种就OK
CREATE TABLE `leyangjun_test` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`msg` VARCHAR(256),
`ts_create` timestamp NOT NULL DEFAULT '1971-01-01 00:00:00',
`ts_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
on updatecurrent_timestamp(在navicat中文版中为“刷新当前时间戳计时”选项)只能设置一个,不能同时设置2个及以上。
原因:
在MySQL5.6.5版本之前,是只能有一列能够在初始化的时候或者被更新的时候自动设置CURRENT_TIMESTAMP的值。这个限制在后续版本中取消了,后续版本的MySQL支持任意列被设置为DEFAULT CURRENT_TIMESTAMP以及 ON UPDATE CURRENT_TIMESTAMP时自动更新值。
MySQL的release note中也说明。https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-5.html