ddddd

mysql中datetime默认值设置0000-00-00失败的问题

作者:程序员11 时间:2021-08-20 人气:478 QQ交流群\邮箱:1003265987@qq.com
mysql中datetime默认值设置0000-00-00失败的问题
要展示的内容

现象:

mysql5.7之后版本datetime默认值设置'0000-00-00',出现异常:Invalid default value for 'create_time'

原因:

mysql5.7之后版本的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, and NO_ENGINE_SUBSTITUTION


其中NO_ZERO_IN_DATE, NO_ZERO_DATE两个选项禁止了0000这样的日期和时间。因此在mysql的配置文件中,重新设置sql_mode,去掉这两项就可以了。


解决方法:


linux:


修改my.cnf文件,在[mysqld]中添加


sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


重启mysql


Mac


在MacOS中默认是没有my.cnf 文件,如果需要对MySql 进行定制,拷贝/usr/local/mysql/support-files/目录中任意一个.cnf 文件。笔者拷贝的是my-default.cnf,将它放到其他目录,按照上面修改完毕之后,更名为my.cnf,然后拷贝到/etc目录再重启下mysql就大功告成了。


Windows:


修改my.ini文件后重启mysql。


查看sql-mode的方法:


1.mysql数据库的中有一个环境变量sql_mode,定义了mysql应该支持的sql语法,数据校验等!我们可以通过以下方式查看当前数据库使用的sql_mode:



mysql> select @@sql_mode;

+----------------------------------------------------------------+

| @@sql_mode                                                     |

+----------------------------------------------------------------+

| STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |

+----------------------------------------------------------------+

2.通过查看系统变量方式:

mysql> show variables like 'sql_mode%'G;  

*************************** 1. row ***************************  

Variable_name: sql_mode  

        Value: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION  


————————————————


温馨提示:

欢迎阅读本文章,觉得有用就多来支持一下,没有能帮到您,还有很多文章,希望有一天能帮到您。

mysql中datetime默认值设置0000-00-00失败的问题---相关文章


评论区

ddddd

程序员-学习的网站-想学习编程的码农可以进来看看

首页

视频教程

购物车

我的订单