更改表失败,因为行包含不正确的数据 - 日期时间值不正确:"0000-00-00 00:00:00"



我正在用下面的语句更新当前用户表:

`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")。

相关内容

  • 没有找到相关文章

最新更新