我正在使用以下语句更新当前用户表:
`ALTER TABLE `users` ADD `title` VARCHAR( 5 ) NULL DEFAULT NULL AFTER `surname` ;`
返回以下错误:
#1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'created_at' at row 1
Created_at列结构是:
created_at datetime NOT NULL
不确定数据为何无效 - 是否与MySQL版本(从5.5.43到5.1.73)有关?
我目前的修复是在ALTER TABLE语句之前更新datetime值:
UPDATE `users` SET `created_at`='2014-01-01 00:00:00' WHERE `created_at`='0000-00-00 00:00:00';
这是一个合理的解决方法吗?
答案 0 :(得分:3)
服务器要求月和日值有效,而不仅仅是 分别在1到12和1到31之间。
此外:
启用严格模式后,无效日期会生成错误。以准许 这样的日期,启用ALLOW_INVALID_DATES。
所以Michael - sqlbot问你正确的问题。
答案 1 :(得分:2)
Created_at列结构是:
created_at datetime NOT NULL
似乎'0000-00-00 00:00:00'在您的新MySQL版本中被视为NULL但不是旧版本,并且您已指定数据库不应接受NULL值(“ NOT NULL“)。
答案 2 :(得分:0)
你应该禁用STRICT_TRANS_TABLES模式
SET sql_mode = '';
或
转到/etc/mysql/my.cnf
&评论STRICT_TRANS_TABLES
实用说明 SQL STRICT MODE