【发布时间】:2013-02-19 15:46:44
【问题描述】:
我被要求对目前仅部署到 Linux 生产服务器的现有应用程序进行更改。我已经继续,并且该应用程序大部分时间都在我的本地 Windows PC 上运行。我在本地 PC 上安装了来自 Production 的 MySQL DB 的完整副本。生产数据库在 Linux 上是 MySQL v5.0.95,而我的本地数据库在 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
我查看了 Production my.cnf 和我的本地 my.ini 寻找任何主要差异,我还尝试在本地使用 sql-mode "ALLOW_INVALID_DATES" 但它没有改变最终结果。
我知道我可以更改代码以不传入这些空字符串,但有很多这样的语句,此时我不希望尽可能更改所有这些语句。该客户的预算和时间有限,我想专注于他们的新要求。如果可能的话,我正在寻找有关如何让我的本地环境像在生产环境中一样工作的意见。
感谢您的宝贵时间。
【问题讨论】:
-
''不是有效日期.. 应该添加什么日期?当前日期? -
不,它在本地和生产中都传入了一个空字符串。我知道这很奇怪,我不确定它在生产环境中是如何工作的,但确实如此。
标签: mysql