mysql SQL错误[1525] [HY000]:DATETIME值不正确:''

fykwrbwg  于 2023-03-28  发布在  Mysql
关注(0)|答案(3)|浏览(1482)

我在运行以下查询时得到错误SQL Error [1525] [HY000]: Incorrect DATETIME value: ''

SELECT * FROM mytable where date_time_column >=''

查询在过去的几个月里一直有效,从昨天开始出现上述错误。
我的MySQL版本是8.0.17
我试着通过我的代码的旧版本运行代码,仍然得到同样的错误。甚至在MySQL Workbench中尝试也会得到同样的错误。
什么数据库配置更改会导致此问题?

htrmnn0y

htrmnn0y1#

这似乎与数据库更改本身无关,但在8.0.16版本中,关于DATETIMETIMESTAMP类型与strings的比较发生了一些变化。该行为已在8.0.16更改日志中记录如下:
DATE值与常量字符串进行比较时,MySQL首先尝试将字符串转换为DATE,然后执行比较。当转换失败时,MySQL将DATE作为字符串执行比较,这可能导致不可预测的行为。现在在这种情况下,如果字符串转换为DATE失败,ER_WRONG_VALUE比较失败。(错误#29025656)
此外,这被报告为bug here
PD:你的查询在我的旧版MySQL 5.7上工作。

kmbjn2e3

kmbjn2e32#

对我来说,问题是触发器在每次更新一行后都会尝试更新同一个字段。
触发器在进行比较时将不使用正确的格式。

13z8s7eq

13z8s7eq3#

我在mysql 8.0中也遇到了同样的问题。在我执行我的sql insert in Mysql命令后,它看起来像下面这样:

Query: insert into t_user(user_id, eff_dateFrom, eff_dateTo, status...
Error Code: 1525
Incorrect DATETIME value: ''

我花了几个小时来找出错误,最终意识到我的触发器导致的问题。我的触发器没有正确的日期时间格式。当我执行命令时,它实际上会触发触发器,脚本在触发器中运行错误的日期时间格式并导致错误。
谢谢你的线索。

相关问题