首页 >数据库 >mysql教程 >为什么在 MySQL 中添加列会导致''created_at'的默认值无效”错误?

为什么在 MySQL 中添加列会导致''created_at'的默认值无效”错误?

DDD
DDD原创
2024-12-02 11:48:10897浏览

Why Does Adding a Column Result in an

Created_At 的默认值无效

问题:

尝试通过以下方式更改表时添加新列时,您会遇到错误:

ERROR 1067 (42000): Invalid default value for 'created_at'

尽管没有修改任何时间戳列。

解决方案:

错误源自sql_modes。要解决此问题:

  1. 检查 SQL 模式:
show variables like 'sql_mode' ;
  1. 禁用有问题的模式:

从以下模式中删除sql_mode:

NO_ZERO_IN_DATE
NO_ZERO_DATE

这些模式默认存在于较新的 MySQL 版本中。

全局设置:

对于系统范围的更改,以 root 身份执行以下命令:

set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

其他注意:

  • 现在可以添加新列而不会触发错误。
  • 如果您希望为created_at使用默认的NOT NULL值,您可以显式指定它:
ALTER TABLE investments ADD bank TEXT DEFAULT NOT NULL;

以上是为什么在 MySQL 中添加列会导致''created_at'的默认值无效”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn