我被要求对目前仅部署到 Linux 生产服务器的现有应用程序进行更改。我已经继续,并且该应用程序大部分时间都在我的本地 Windows PC 上运行。我MySQL
在本地 PC 上安装了来自 Production 的数据库的完整副本。生产数据库MySQL v5.0.95
在 Linux 上,我的本地数据库MySQL v5.5
在 Windows 上。两者都处于 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
寻找任何主要差异,并且我还尝试在ALLOW_INVALID_DATES
本地使用 sql-mode " " 但它并没有改变最终结果。
我知道我可以更改代码以不传入这些空字符串,但是有很多这样的语句,此时我不希望尽可能更改所有这些语句。该客户的预算和时间框架有限,我想专注于他们的新要求。如果可能的话,我正在寻找有关如何让我的本地环境像在生产中一样工作的输入。
谢谢你的时间。