我在运行以下查询时得到错误SQL Error [1525] [HY000]: Incorrect DATETIME value: '':
SQL Error [1525] [HY000]: Incorrect DATETIME value: ''
SELECT * FROM mytable where date_time_column >=''
查询在过去的几个月里一直有效,从昨天开始出现上述错误。我的MySQL版本是8.0.17。我试着通过我的代码的旧版本运行代码,仍然得到同样的错误。甚至在MySQL Workbench中尝试也会得到同样的错误。什么数据库配置更改会导致此问题?
8.0.17
htrmnn0y1#
这似乎与数据库更改本身无关,但在8.0.16版本中,关于DATETIME和TIMESTAMP类型与strings的比较发生了一些变化。该行为已在8.0.16更改日志中记录如下:当DATE值与常量字符串进行比较时,MySQL首先尝试将字符串转换为DATE,然后执行比较。当转换失败时,MySQL将DATE作为字符串执行比较,这可能导致不可预测的行为。现在在这种情况下,如果字符串转换为DATE失败,ER_WRONG_VALUE比较失败。(错误#29025656)此外,这被报告为bug here。PD:你的查询在我的旧版MySQL 5.7上工作。
8.0.16
DATETIME
TIMESTAMP
strings
DATE
ER_WRONG_VALUE
kmbjn2e32#
对我来说,问题是触发器在每次更新一行后都会尝试更新同一个字段。触发器在进行比较时将不使用正确的格式。
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: ''
我花了几个小时来找出错误,最终意识到我的触发器导致的问题。我的触发器没有正确的日期时间格式。当我执行命令时,它实际上会触发触发器,脚本在触发器中运行错误的日期时间格式并导致错误。谢谢你的线索。
3条答案
按热度按时间htrmnn0y1#
这似乎与数据库更改本身无关,但在
8.0.16
版本中,关于DATETIME
和TIMESTAMP
类型与strings
的比较发生了一些变化。该行为已在8.0.16
更改日志中记录如下:当
DATE
值与常量字符串进行比较时,MySQL首先尝试将字符串转换为DATE
,然后执行比较。当转换失败时,MySQL将DATE
作为字符串执行比较,这可能导致不可预测的行为。现在在这种情况下,如果字符串转换为DATE
失败,ER_WRONG_VALUE
比较失败。(错误#29025656)此外,这被报告为bug here。
PD:你的查询在我的旧版MySQL 5.7上工作。
kmbjn2e32#
对我来说,问题是触发器在每次更新一行后都会尝试更新同一个字段。
触发器在进行比较时将不使用正确的格式。
13z8s7eq3#
我在mysql 8.0中也遇到了同样的问题。在我执行我的sql insert in Mysql命令后,它看起来像下面这样:
我花了几个小时来找出错误,最终意识到我的触发器导致的问题。我的触发器没有正确的日期时间格式。当我执行命令时,它实际上会触发触发器,脚本在触发器中运行错误的日期时间格式并导致错误。
谢谢你的线索。