列名未将时间戳作为默认值

时间:2015-03-12 12:00:21

标签: mysql sql mysql-error-1067

我在同一张表中有两列 created_at updated_at 。这两列的数据类型均为日期时间。现在,当我尝试修改列数据类型时,如下所示 -

alter table nodestatics modify column updated_at datetime default current_timestamp; 

alter table nodestatics modify column created_at datetime default current_timestamp;

显示以下错误

  

错误代码:1067' updated_at'的默认值无效(0毫秒)

     

错误代码:1067' created_at'的默认值无效(0毫秒)

我的mysql版本是5.5.41-0ubuntu0.14.04.1(Ubuntu)

3 个答案:

答案 0 :(得分:2)

很难在评论中引用documentation

  

从MySQL 5.6.5开始,TIMESTAMPDATETIME列可以自动生成   初始化并更新到当前日期和时间(即,   当前时间戳)。在5.6.5之前,这仅适用于TIMESTAMP和   每个表最多一个TIMESTAMP列。

升级到5.6.5。或者使用TIMESTAMP代替DATETIME

答案 1 :(得分:1)

使用TIMESTAMP代替DATETIME


应该是这样的:

ALTER TABLE nodestatics MODIFY COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;

ALTER TABLE nodestatics MODIFY COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;


或者您可以使用TRIGGERS

CREATE TRIGGER myTable_OnInsert BEFORE INSERT ON `tblMyTable`
    FOR EACH ROW SET NEW.dateAdded = NOW();

您可以查看similar topic。快乐的编码!

答案 2 :(得分:0)

试试这个

alter table nodestatics modify column created_at timestamp default current_timestamp;