我正在使用以下语句更新当前用户表:
`ALTER TABLE `users` ADD `title` VARCHAR( 5 ) NULL DEFAULT NULL AFTER `surname` ;`
Run Code Online (Sandbox Code Playgroud)
返回以下错误:
#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 语句之前更新日期时间值:
UPDATE `users` SET `created_at`='2014-01-01 00:00:00' WHERE `created_at`='0000-00-00 00:00:00';
Run Code Online (Sandbox Code Playgroud)
这是一个合理的解决方法吗?
你应该禁用 STRICT_TRANS_TABLES 模式
SET sql_mode = '';
Run Code Online (Sandbox Code Playgroud)
或去/etc/mysql/my.cnf
评论STRICT_TRANS_TABLES
有用的说明 SQL STRICT MODE
Created_at 列结构为:
created_at datetime NOT NULL
看起来“0000-00-00 00:00:00”在新的 MySQL 版本中被视为 NULL,但在旧版本中则不然,并且您已指定数据库不应接受 NULL 值(“NOT NULL”) )。