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



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

无效的日期时间格式:1292错误的日期时间值:" for column nameOfTheColumn

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

 #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

我重新启动计算机,仍然不工作,但根据在线文档和其他问题,这就是方法,但我想知道它到底是什么改变我必须做的,使我的应用程序工作。重复,代码可以在生产环境中工作,使用xampp等窗口。所以不能改变,因为是长,只是在本地工作,我需要在MYSQL数据库正确的改变。

提前感谢!

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

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

SET SESSION sql_mode='ALLOW_INVALID_DATES' 

你可以改变你的列允许null

ALTER TABLE table_name MODIFY datetime_column_name datetime;

只要列没有声明为not NULL,默认情况下列是可空的

最后我找到了解决方案,实际上我正在路上,解决方案是注释掉sql_mode,但文件位于/etc/my.cnf而不是/usr/local/mysql/my.cnf如果您不注释这一行,并且尝试插入一个空值,则会引发错误,但如果您注释掉它,则空值变为'0000-00-00 00:00:00'

我们的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')时,问题就解决了。

相关内容

  • 没有找到相关文章

最新更新