我正在用下面的语句更新当前用户表:
`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';
这是一个合理的解决方案吗?
你应该禁用STRICT_TRANS_TABLES模式
SET sql_mode = '';
或转到/etc/mysql/my.cnf
&注释掉STRICT_TRANS_TABLES
实用注释 SQL STRICT MODE
MySQL的文档说
也服务器要求月和日的值是有效的,而不仅仅是取值范围为1 ~ 12,1 ~ 31。
:
启用严格模式后,无效日期将生成错误。允许这样的日期,启用ALLOW_INVALID_DATES
所以Michael - sqlbot问对了问题。
Created_at列结构为:
created_at datetime NOT NULL
看起来'0000-00-00 00:00:00'在你的新MySQL版本中被视为NULL,而不是你的旧版本,并且你已经指定DB不应该接受NULL值(" not NULL")。