一尘不染

MYSQL不正确的DATETIME格式

mysql

我有一个使用Doctrine 1的应用程序,并且update_datetime通过生成对象的字段new Zend_Date->getIso()。它工作了好几年,但现在我有了一个新的笔记本,Doctrine尝试将DATETIME字段作为字符串插入,"2013-07-12T03:00:00+07:00"而不是"2013-07-12 00:00:00"完全奇怪的普通MySQL datetime格式。

完全相同的代码可以在另一台计算机上正常运行。一切几乎都相同–两者均使用MySQL 5.6.12,PHP 5.3.15。知道我应该去哪里看吗?

Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2013-07-12T03:00:00+07:00' for column 'nextrun' at row 1' in library/Doctrine/Connection.php:1083

更新

好的,在StackOverflow社区的帮助下,我终于解决了它。问题出STRICT_TRANS_TABLESsql_mode变量中。但是更改它/etc/my.cnf似乎还不够,所以我必须运行mysql -uroot并键入以下内容:

set sql_mode=NO_ENGINE_SUBSTITUTION; set global sql_mode=NO_ENGINE_SUBSTITUTION;

因此删除 STRICT_TRANS_TABLES

UPDATE2 如何永远摆脱STRICT?如何在MySQL中摆脱STRICT
SQL模式


阅读 705

收藏
2020-05-17

共1个答案

一尘不染

如果存在,则可以尝试STRICT_TRANS_TABLES从my.ini中的sql-mode中删除。

这可能会导致此错误,其中datetime字符串值包含尚未转换为mysql datetime的格式。据报道此my.ini更改已修复:

2020-05-17