MySQL中的全局设置是否将日期字段的空字符串解释为NULL?

MySQL中的全局设置是否将日期字段的空字符串解释为NULL?,mysql,date,datetime,null,Mysql,Date,Datetime,Null,我有一些PHP和MySql代码,在执行insert语句试图将“”放入可为空的日期字段时出错。我相信代码在另一个环境中工作,因此我想知道环境是否不同,是否可以将空字符串放入MySql日期字段并将其解释为NULL 我可以使用字符串“0000-00-00”插入到我的环境中,它确实会在日期列中创建一个空值,但是“”无效。MySQL开发人员正在逐步收紧默认SQL模式,以使MySQL对您提供的数据更加挑剔。较新的版本比较旧的版本具有更多的限制性默认值。这就是为什么以前有用的东西不再有用了 在尝试将空字符串插

我有一些PHP和MySql代码,在执行insert语句试图将“”放入可为空的日期字段时出错。我相信代码在另一个环境中工作,因此我想知道环境是否不同,是否可以将空字符串放入MySql日期字段并将其解释为NULL


我可以使用字符串“0000-00-00”插入到我的环境中,它确实会在日期列中创建一个空值,但是“”无效。

MySQL开发人员正在逐步收紧默认SQL模式,以使MySQL对您提供的数据更加挑剔。较新的版本比较旧的版本具有更多的限制性默认值。这就是为什么以前有用的东西不再有用了

在尝试将空字符串插入
DATE
列之前,请尝试发出此命令。这应该让MySQL停止抱怨

set session sql_mode = 'ALLOW_INVALID_DATES';

请阅读本文了解更多细节

在插入触发器之前创建一个
。在触发器代码中,检查
new.date\u column\u name
是否等于空字符串,如果是
set new.date\u column\u name=null。这是数据库级别的快速修复。全局级别上没有将0长度字符串解释为
null
的设置。如果有,那将是一场灾难。感谢您的回复,我不相信现有数据库中的表上有触发器。我有一个数据库的最新副本,它似乎可以工作,而且我相信触发器也包括在内。我不知道这句话怎么可能在另一个环境中工作。非常感谢,这似乎是不同之处。