首页 > 数据库 > mysql教程 > 为什么在 MySQL 中添加列时出现'ERROR 1067 (42000): Invalid Default Value for 'created_at'”?

为什么在 MySQL 中添加列时出现'ERROR 1067 (42000): Invalid Default Value for 'created_at'”?

Barbara Streisand
发布: 2024-12-11 03:50:10
原创
715 人浏览过

Why Am I Getting

“错误 1067 (42000):'created_at' 的默认值无效”解释

尝试通过添加新表来修改表时列中,您可能会遇到错误:“ERROR 1067 (42000): ‘created_at’的默认值无效。”这个错误似乎违反直觉,因为您没有更改“created_at”列本身。

根本原因

问题源于称为 SQL 模式的 MySQL 配置设置。具体来说,是“NO_ZERO_IN_DATE”和“NO_ZERO_DATE”SQL 模式。这些模式将默认日期和时间戳值限制为同时包含日期和时间部分,不允许时间部分为“00:00:00”的值。

创建新表时,它会继承 SQL 模式创建时处于活动状态。在启用这些 SQL 模式的情况下,它会影响时间戳列(如“created_at”)的默认值。在激活这些 SQL 模式的情况下向表中添加新列会尝试覆盖“created_at”的现有默认值,这是不允许的。

解决方案

要解决对于此问题,您可以通过运行以下命令来识别活动的 SQL 模式:

show variables like 'sql_mode' ; 
登录后复制

如果存在“NO_ZERO_IN_DATE”和“NO_ZERO_DATE”SQL模式,您可以通过设置SQL模式来禁用它们以消除这些限制。您可以使用以下命令以 root 用户身份全局执行此操作:

set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
登录后复制

对 SQL 模式进行必要的更改后,您应该能够添加新列而不会遇到错误。

以上是为什么在 MySQL 中添加列时出现'ERROR 1067 (42000): Invalid Default Value for 'created_at'”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板