zoukankan      html  css  js  c++  java
  • mysql error 1067 invalid default timestamp

    问题

    MySQL 5.7版本,在创建数据表时,使用以下语句定义一个字段:

      `update_time` timestamp DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
    

    会造成创建失败,报错为:

    mysql error 1067 invalid default timestamp

    原因

    对于timestamp类型的字段,MySQL有其定义要求,不允许使用零值。

    mysql> show variables like 'sql_mode' ;
    +---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
    | Variable_name | Value                                                                                                                                     |
    +---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
    | sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
    +---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.02 sec)
    

    解决办法

    1.修改sql_mode

    可以去掉其中的限制NO_ZERO_IN_DATE,NO_ZERO_DATE。

    方法1:命令行下
    这种方式,只是暂时修改,重连后又失效。

    mysql> set sql_mode=(select replace(@@sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE',''));
    

    方法二:修改配置文件
    在配置文件/etc/my.cnf中重新定义sql_mode:

    [mysqld]
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    

    然后,重启MySQL。

    2.修改timestamp的默认值

    例如,修改为“1970-01-01 08:00:01”

    注意时区的问题,中国是东八区。

    参考

    https://blog.csdn.net/SMV72P/article/details/79508718
    https://stackoverflow.com/questions/36882149/error-1067-42000-invalid-default-value-for-created-at

    Mac上安装Mysql配置文件的添加及修改配置文件

  • 相关阅读:
    Servlet
    MySQL游标
    MySQL数据库的备份和还原
    MySQL安全管理
    MySQL存储过程
    MySQL联结——实现多表查询
    MySQL视图
    MySQL触发器
    asp.net core 读取连接字符串
    form表单提交前进行ajax验证
  • 原文地址:https://www.cnblogs.com/lanyangsh/p/10467296.html
Copyright © 2011-2022 走看看