我在同一张表中有两列 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)
答案 0 :(得分:2)
很难在评论中引用documentation:
从MySQL 5.6.5开始,
TIMESTAMP
和DATETIME
列可以自动生成 初始化并更新到当前日期和时间(即, 当前时间戳)。在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;