我有一个带有 Doctrine 1 的应用程序,我update_datetime
通过new Zend_Date->getIso()
. 多年来它工作得很好,但现在我有了一个新笔记本,Doctrine 尝试将DATETIME
字段作为字符串插入,"2013-07-12T03:00:00+07:00"
而不是普通的 MySQL 日期时间格式"2013-07-12 00:00:00"
,这很奇怪。
相同的代码在另一台计算机上运行得很好。一切都几乎相同——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_TABLES
在sql_mode
变量中。但是更改它/etc/my.cnf
似乎还不够,所以我不得不运行mysql -uroot
并输入以下内容:
set sql_mode=NO_ENGINE_SUBSTITUTION; set global sql_mode=NO_ENGINE_SUBSTITUTION;
从而去除STRICT_TRANS_TABLES
UPDATE2 如何永远摆脱严格?如何摆脱 MySQL 中的 STRICT SQL 模式