mysql报错解决 `1525 - Incorrect DATETIME value: ‘0000-00-00 00:00:00‘`

你遇到的错误 1525 - Incorrect DATETIME value: '0000-00-00 00:00:00' 说明数据库启用了严格模式(sql_mode 包含了 NO_ZERO_DATE),并且 '0000-00-00 00:00:00' 作为无效的日期不被允许。

解决方案

  1. 查看当前的 SQL 模式

你可以通过以下查询查看当前的 sql_mode 设置,看看是否包含了 NO_ZERO_DATE

sql 复制代码
SELECT @@sql_mode;

如果返回的 sql_mode 包含 NO_ZERO_DATE,则会拒绝 '0000-00-00 00:00:00' 这种无效日期。

  1. 禁用 NO_ZERO_DATE 模式(临时修改):

如果你希望临时绕过这个问题,可以通过禁用 NO_ZERO_DATE 来允许使用 '0000-00-00 00:00:00'。使用以下 SQL 语句:

sql 复制代码
SET SESSION sql_mode = REPLACE(@@sql_mode, 'NO_ZERO_DATE', '');

然后,再执行你的查询:

sql 复制代码
SELECT * FROM rr_main WHERE UPDATE_TIME = '0000-00-00 00:00:00';

注意: 这个修改只会在当前会话中生效,当 MySQL 服务重启后会恢复默认设置。

  1. 使用 IS NULL 查找(如果 0000-00-00 00:00:00 被视作空值)

在某些情况下,如果数据库强制插入无效日期,'0000-00-00 00:00:00' 可能被处理为 NULL,你可以尝试通过 IS NULL 查找:

sql 复制代码
SELECT * FROM rr_main WHERE UPDATE_TIME IS NULL;
  1. 永久禁用 NO_ZERO_DATE(修改 MySQL 配置):

如果你希望永久禁用 NO_ZERO_DATE,可以编辑 MySQL 配置文件 my.cnfmy.ini,在 [mysqld] 部分添加如下配置:

ini 复制代码
sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

然后重启 MySQL 服务。

  1. 替换无效的 0000-00-00 00:00:00

如果你知道表中存在 0000-00-00 00:00:00 作为无效日期的记录,可以直接用合法的日期值进行替换,例如:

sql 复制代码
UPDATE rr_main
SET UPDATE_TIME = NOW()
WHERE UPDATE_TIME = '0000-00-00 00:00:00';

这将把所有 UPDATE_TIME'0000-00-00 00:00:00' 的记录更新为当前时间。

总结:

  • 如果 NO_ZERO_DATE 被启用,会导致 '0000-00-00 00:00:00' 作为无效日期值出现错误。
  • 可以临时禁用 NO_ZERO_DATE,或者修改查询逻辑查找 NULL 值。
  • 永久解决方案是调整 sql_mode 配置或者替换表中的无效日期值。

a. 如果你希望进一步了解如何更改 MySQL 的配置或如何使用其他查询方式来解决问题,请告诉我。

相关推荐
C嘎嘎嵌入式开发1 小时前
什么是僵尸进程
服务器·数据库·c++
Yeats_Liao3 小时前
Navicat 导出表结构后运行查询失败ERROR 1064 (42000): You have an error in your SQL syntax;
数据库·sql
明月看潮生4 小时前
青少年编程与数学 02-007 PostgreSQL数据库应用 15课题、备份与还原
数据库·青少年编程·postgresql·编程与数学
明月看潮生4 小时前
青少年编程与数学 02-007 PostgreSQL数据库应用 14课题、触发器的编写
数据库·青少年编程·postgresql·编程与数学
水瓶丫头站住7 小时前
安卓APP如何适配不同的手机分辨率
android·智能手机
xvch8 小时前
Kotlin 2.1.0 入门教程(五)
android·kotlin
加酶洗衣粉9 小时前
MongoDB部署模式
数据库·mongodb
Suyuoa9 小时前
mongoDB常见指令
数据库·mongodb
添砖,加瓦9 小时前
MongoDB详细讲解
数据库·mongodb
Zda天天爱打卡9 小时前
【趣学SQL】第二章:高级查询技巧 2.2 子查询的高级用法——SQL世界的“俄罗斯套娃“艺术
数据库·sql