错误代码 1292 表示在执行 ALTER TABLE 语句时,MySQL 发现了一些行中存在无效的日期时间值 ‘0000-00-00 00:00:00’。
即使你已经将 add_date 的默认值更改为 CURRENT_TIMESTAMP,表中已有的无效值仍然会导致此错误。
为了顺利执行 ALTER TABLE 语句并解决此错误,你需要先修复表中所有无效的日期时间值。
以下是详细步骤:
1、暂时关闭严格模式,允许无效的日期时间值(如果不更改模式,将无法更改 add_date 中的数据)
SET sql_mode = ‘NO_ENGINE_SUBSTITUTION’;
2、更新 add_date 字段
//将 add_time 字段的 UNIX 时间戳转换为有效的日期时间,并更新 add_date 字段。
UPDATE `lan`.`ymmfk_webchat_log`
SET `add_date` = FROM_UNIXTIME(`add_time`)
WHERE `add_date` = ‘0000-00-00 00:00:00’ OR `add_date` IS NULL;
3、恢复严格模式
SET sql_mode = ‘STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION’;