Incorrect datetime value: '0000-00-00 00:00:00' for column 'table-name' at row 1
如果出现提示如下,则可能是数据库的模式未进行设置
Incorrect datetime value: '0000-00-00 00:00:00' for column 'book_start' at row 1
该提示表示数据库的时间相关字段的模式不正确,需要将其修改为另一种模式,修改方式为通过SQL语句来修改。
第一步:
运行查询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, 该文件不同的服务器位置不同,我们以宝塔面板的设置方法为例:
依次打开宝塔面板、软件管理、mysql软件后的设置按钮,点击后如下图所示:
2. 找到配置文件中的[mysqld]括号后,[mysqld]部分最后添加下面的代码:
sql_mode="ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"