我在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中进行正确的更改。
提前致谢!
答案 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')
时,问题就消失了。