我被要求对一款现有应用程序进行更改,该应用程序目前仅部署在Linux生产服务器上。我已经开始在我的Windows本地计算机上使应用程序大部分工作。我在本地PC上安装了来自生产环境的MySQL DB的完整副本。生产DB是Linux上的MySQL v5.0.95,我的本地DB是Windows上的MySQL v5.5,两者都处于InnoDB模式。
我的问题出在以下语句上。为方便其他人帮助而通用化。
在某些情况下,传递一个空字符串并不会在生产环境中造成任何问题,并允许记录被保存/更新,但在本地会抛出
我知道我可以更改代码以不传递这些空字符串,但是有很多类似的语句,目前我不希望对所有这些语句进行更改。这个客户的预算和时间有限,我想专注于他们的新需求。我正在寻找如何使我的本地环境像生产环境一样工作的建议,如果可能的话。
感谢您的时间。
我的问题出在以下语句上。为方便其他人帮助而通用化。
update atable
set adate=DATE_ADD(str_to_date('','%m/%d/%Y'), INTERVAL 0 DAY)
where anum='1'
在某些情况下,传递一个空字符串并不会在生产环境中造成任何问题,并允许记录被保存/更新,但在本地会抛出
SQLException
。因此,我直接在我的本地数据库中尝试了SQL
语句,在两种情况下都得到了以下错误消息。
我查看了生产环境中的错误代码:1411。函数str_to_date的''不正确的日期时间值
my.cnf
和本地的my.ini
,寻找任何主要差异,我还尝试在本地使用sql-mode "ALLOW_INVALID_DATES
",但结果没有改变。我知道我可以更改代码以不传递这些空字符串,但是有很多类似的语句,目前我不希望对所有这些语句进行更改。这个客户的预算和时间有限,我想专注于他们的新需求。我正在寻找如何使我的本地环境像生产环境一样工作的建议,如果可能的话。
感谢您的时间。