MySQL错误 - 日期时间格式无效:1292日期时间值不正确:''对于专栏

时间:2014-05-10 13:34:03

标签: php mysql macos datetime

我在Os X 10.9.2中使用mysql,当我尝试在本地运行我的php网站时出现此错误:

日期时间格式无效:1292日期时间值不正确:列名称为'''''

当我尝试在datetime字段中插入空值时发生错误。该网站在生产和其他一些本地计算机上工作正常,所以问题在于数据库,我必须在我的本地数据库中解决。阅读我读到的问题,mysql可以在严格模式下运行,所以我编辑/usr/local/mysql/my.cnf并注释掉这一行:

 #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

我重新启动计算机仍然无法正常工作,但根据在线文档和其他问题,这就是方法,但我想知道为了使我的应用程序正常工作,我必须做些什么改变。重复一遍,代码在生产中运行,windows与xampp等等...所以不能改变因为很长而且只是为了在本地工作我需要在MYSQL DATABASE中进行正确的更改。

提前致谢!

4 个答案:

答案 0 :(得分:8)

看起来你的osx实例上的默认sql_mode设置为拒绝无效日期。

您可以尝试发出以下命令:

SET SESSION sql_mode='ALLOW_INVALID_DATES' 

初始化会话时。

答案 1 :(得分:0)

您可以将列更改为允许null

ALTER TABLE table_name MODIFY datetime_column_name datetime;

默认情况下,只要列未声明为NOT NULL,列就可以为空。

答案 2 :(得分:0)

最后我找到了解决方案,其实我在路上,解决方法是注释掉sql_mode,但文件位于/etc/my.cnf而不是/usr/local/mysql/my.cnf。如果您不对此行进行注释,并且尝试插入空值,则会引发错误,但如果您将其注释掉,则空值将变为&00; 00:00 | 00'

答案 3 :(得分:0)

我们的MySQL 5.6服务器上存在类似的问题。
当我将sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES更改为sql_mode=NO_ENGINE_SUBSTITUTION时,此问题已解决。

当然,最好确保该值的格式正确。
例如,如果列类型为“ DATETIME”,但是在php中,我们尝试插入由date('c')生成的值-我们将得到该错误(如果打开了严格模式)。但是,当我们将其更改为:date('Y-m-d H:i:s')时,问题就消失了。