MySQL 错误 1067 故障排除:添加新列时“created_at”的默认值无效
尝试通过添加新列来更改表列可能会导致错误“ERROR 1067 (42000): “created_at”的默认值无效。当更改时间戳列时,通常会出现此错误;
原因:
该错误是由 MySQL 的 sql_modes 设置引起的。具体来说,“NO_ZERO_IN_DATE”和“NO_ZERO_DATE”模式会阻止默认时间戳值“0000-00-00”和“00:00:00”存储在created_at和updated_at列中。
解决方案:
要解决该错误,请删除sql_modes 设置中的“NO_ZERO_IN_DATE”和“NO_ZERO_DATE”模式。
步骤:
验证当前sql_modes:
show variables like 'sql_mode' ;
删除违规模式:
暂时禁用当前模式会话:
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
永久设置全局模式:
SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
重新尝试添加列:
ALTER TABLE investments ADD bank TEXT;
注意:
较新版本的 MySQL 中的默认 sql_mode 包括“NO_ZERO_IN_DATE”和“NO_ZERO_DATE” “模式。因此,定期检查 sql_modes 设置并在遇到此错误时进行必要的调整非常重要。
以上是为什么我会收到 MySQL 错误 1067:'created_at”的默认值无效?的详细内容。更多信息请关注PHP中文网其他相关文章!