美文网首页
mysql之修改sql_mode允许时间类型字段默认值为'000

mysql之修改sql_mode允许时间类型字段默认值为'000

作者: 薛延祥 | 来源:发表于2020-05-06 15:31 被阅读0次

    1、无论时间字段的类型是 timestamp 还是 datetime,设置默认值为 '0000-00-00 00:00:00'时会报错,默认值无效

    2、原因,在MySQL的sql_mode中配置不允许其中包含字符0

    3、解决方法

    (1)用root账户登录MySQL

    (2)查看全局的sql_mode配置

    select @@global.sql_mode;

    查询结果中有NO_ZERO_DATE和NO_ZERO_IN_DATE,就是我们日期不能设为0000-00-00的原因了

    (3)修改全局的sql_mode配置值

    set @@global.sql_mode=(select replace(@@sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE','')); 

    替换其中的NO_ZERO_IN_DATE,NO_ZERO_DATE为空字符串

    (4)此时,不需要重启MySQL服务器,但是需要关闭Navicat客户端该数据库的连接,再打开。此时,就可以设置时间类型字段默认值为'0000-00-00 00:00:00'了。

    (5)特别注意:

    这种修改配置只是修改了目前的状态,如果重新启动MySQL服务,那么配置就丢失了。

    mysql.server status

    mysql.server start

    mysql.server stop

    找到对应MySQL的配置文件my.cnf,添加下面的配置值

    sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

    重启MySQL服务后,进入查看发现该配置值也修改了。

    相关文章

      网友评论

          本文标题:mysql之修改sql_mode允许时间类型字段默认值为'000

          本文链接:https://www.haomeiwen.com/subject/elrwghtx.html