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 的配置或如何使用其他查询方式来解决问题,请告诉我。

相关推荐
TDengine (老段)1 分钟前
TDengine C# 语言连接器入门指南
大数据·数据库·c#·时序数据库·tdengine·涛思数据
liux35283 分钟前
MySQL执行计划与索引优化全面解析(三)
android·mysql·adb
木风小助理5 分钟前
PostgreSQL数据库非常规恢复指南:当数据库无法启动时
数据库·postgresql
Maggie_ssss_supp11 分钟前
LINUX-MySQL索引管理
数据库
悟能不能悟24 分钟前
oracle date类型默认to_char会是什么形式
数据库·oracle
正在走向自律28 分钟前
国产时序数据库实战,金仓如何破解电力行业数据困局
数据库·时序数据库·电科金仓
+VX:Fegn089534 分钟前
计算机毕业设计|基于springboot + vue校园实验室管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
闲人不梦卿35 分钟前
数据库之并发控制
数据库·事务
warton8840 分钟前
proxysql配置mysql mgr代理,实现读写分离
linux·运维·数据库·mysql
上天_去_做颗惺星 EVE_BLUE44 分钟前
Android设备与Mac/Docker全连接指南:有线到无线的完整方案
android·linux·macos·adb·docker·容器·安卓