Incorrect datetime value: '0000-00-00 00:00:00' for column 'table-name' at row 1

  • 创建于 :2019-09-19
  • 上次修改:2019-11-19
  • 适用版本:  Mysql
  • 阅读量:  1050
该文档为V3时编写的文档V4.0和V5.0同样适用,但截图与V4.0、及V5.0后台略有不同,不过同样具有参考价值

如果出现提示如下,则可能是数据库的模式未进行设置

Incorrect datetime value: '0000-00-00 00:00:00' for column 'book_start' at row 1

 该提示表示数据库的时间相关字段的模式不正确,需要将其修改为另一种模式,修改方式为通过SQL语句来修改。


一、临时解决(若数据库重启则自动恢复bug)

二、终极解决



第一步:

运行查询SQL:

select @@global.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


第二步:

运行修改SQL,将上述查询出来的结果中红色部分NO_ZERO_IN_DATE,NO_ZERO_DATE删除,其中蓝色部分,也是要删除的,否则会发生另外一种数据库错误提示STRICT_TRANS_TABLES删除即可,重新运行设置SQL:,重新运行设置SQL:

set @@global.sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

注意:set的时候,查询结果中的ONLY_FULL_GROUP_BY需要删除


备注:设置后查看这里 修复另一种数据库错误 http://help.jiancms.com/index.php/1/addons/docs/home/article/?id=200




二、终极解决

    上面的解决办法只能临时的解决问题,由于您使用的服务器环境基本都未经过调优,mysql数据库会经常的自动重启,这个重启过程可能您并感受不到。 但是它确实重启了。

    如果使用的一中的临时解决方案,当重启之后,就会又出现这样的问题。

    

    要彻底解决就要修改mysql配置文件 my.ini, 该文件不同的服务器位置不同,我们以宝塔面板的设置方法为例:


  1. 依次打开宝塔面板、软件管理、mysql软件后的设置按钮,点击后如下图所示:

image.png


2. 找到配置文件中的[mysqld]括号后,[mysqld]部分最后添加下面的代码:

sql_mode="ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"


image.png