我有一个带有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
UPDATE
好的,在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 如何永远摆脱STRICT?如何在MySQL中摆脱STRICT SQL模式
使用MySQL 5.5.27,在my.cnf中我有:
[mysql]
sql_mode=ANSI
Run Code Online (Sandbox Code Playgroud)
启动mysql控制台后,我得到:
unknown variable 'sql-mode=TRADITIONAL'
Run Code Online (Sandbox Code Playgroud)
MySQL doc Server SQL Modes显示该选项,为什么它不起作用?
(如果有帮助,我在OSX Lion上)