原因:
sql_mode有两种,一种是空值,一种是严格模式,会给出很多默认设置。在MySQL5.7之后默认使用严格模式。
NO_ZERO_DATE:若设置该值,MySQL数据库不允许插入零日期,插入零日期会抛出错误而不是警告。
解决方法:
方式一:
先执行select @@sql_mode,复制查询出来的值并将其中的NO_ZERO_DATE删除,然后执行set sql_mode = ‘修改后的值’。
此方法只在当前会话中生效。
方式二:
先执行select @@global.sql_mode,复制查询出来的值并将其中的NO_ZERO_DATE删除,然后执行set global sql_mode = ‘修改后的值’。
此方法在当前服务中生效,重新MySQL服务后失效。
方法三:
找到mysql的安装目录,打开配置文件 my.ini 或my.cnf文件,在 [mysqld] 里面新增下面这语句:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
修改完成以后记得重启数据库!!
此方法永久生效。