美文网首页
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

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

  • 2019-04-15

    Mysql修改sql_mode 由于MySQL6.5无法插入timestamp 默认值为0000-00-00 00...

  • MySQL sql_mode设置

    MySQL sql_mode设置 问题: 修改varchar类型的paidTime为日期类型的时候 update ...

  • mysql中timestamp类型数据的问题

    mysql5.5中,一张表中不允许有多个timestamp类型的字段同时设置当前时间为默认值,解决这个问题只能是升...

  • 2019-02-23后端整理

    字段类型 字段的约束 null:如果为True,表示允许为空,默认值是False。blank:如果为True,则该...

  • 2019-02-24

    字段类型 字段的约束 null:如果为True,表示允许为空,默认值是False。blank:如果为True,则该...

  • mysql的sql_mode合理设置

    MySQL的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许...

  • MySQL的sql_mode合理设置

    MySQL的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许...

  • Mysql timestamp范围问题

    timestamp 是Mysql中的一个时间戳类型,在创建表时,我为这个类型的字段创建默认值为'1970-01-0...

  • thinkPHP5 "A non well forme

    MYSQL数据表中有个时间戳类型的字段,默认值为CURRENT_TIMESTAMP。 thinkPHP5查询该表的...

网友评论

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

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