1

我在同一张表中有两列created_atupdated_at 。这两列的数据类型均为 datetime。现在,当我尝试按如下方式修改列数据类型时 -

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)

4

3 回答 3

2

很难在评论中引用文档

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

要么升级到 5.6.5。或使用TIMESTAMP代替DATETIME.

于 2015-03-12T12:04:37.533 回答
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();

你可以看看类似的话题。快乐编码!

于 2015-03-12T12:06:29.503 回答
0

尝试这个

alter table nodestatics modify column created_at timestamp default current_timestamp;
于 2015-03-12T12:05:37.310 回答