Error : Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in

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个及以上

扫描二维码关注公众号,回复: 2801426 查看本文章

原因:

在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

猜你喜欢

转载自blog.csdn.net/leyangjun/article/details/80941022
今日推荐