首页 > 数据库 > mysql教程 > 为什么我会收到 MySQL 错误 1067:'created_at”的默认值无效?

为什么我会收到 MySQL 错误 1067:'created_at”的默认值无效?

Patricia Arquette
发布: 2024-12-04 08:40:11
原创
835 人浏览过

Why Am I Getting MySQL ERROR 1067: Invalid Default Value for 'created_at'?

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”模式。

步骤:

  1. 验证当前sql_modes:

    show variables like 'sql_mode' ; 
    登录后复制
  2. 删除违规模式:

    • 暂时禁用当前模式会话:

      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';
      登录后复制
  3. 重新尝试添加列:

    ALTER TABLE investments ADD bank TEXT;
    登录后复制

注意:

较新版本的 MySQL 中的默认 sql_mode 包括“NO_ZERO_IN_DATE”和“NO_ZERO_DATE” “模式。因此,定期检查 sql_modes 设置并在遇到此错误时进行必要的调整非常重要。

以上是为什么我会收到 MySQL 错误 1067:'created_at”的默认值无效?的详细内容。更多信息请关注PHP中文网其他相关文章!

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