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

相关推荐
csdn_aspnet3 小时前
在 MacOS 中安装 MySQL 8
mysql·macos
清风6666663 小时前
基于单片机的水塔液位检测与智能调节报警系统设计
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
gplitems1234 小时前
Technox – IT Solutions & Services WordPress Theme: A Practical
linux·服务器·数据库
不剪发的Tony老师4 小时前
MySQL 9.5创新版发布,有哪些新功能?
数据库·mysql
布朗克1685 小时前
MySQL 及 SQL 注入详细说明
数据库·sql·mysql·1024程序员节
2501_916008895 小时前
Web 前端开发常用工具推荐与团队实践分享
android·前端·ios·小程序·uni-app·iphone·webview
武子康5 小时前
Java-154 深入浅出 MongoDB 用Java访问 MongoDB 数据库 从环境搭建到CRUD完整示例
java·数据库·分布式·sql·mongodb·性能优化·nosql
我科绝伦(Huanhuan Zhou)6 小时前
MySQL一键升级脚本(5.7-8.0)
android·mysql·adb
Austindatabases6 小时前
DBA 从“修电脑的” 到 上演一套 “数据治理” 大戏 --- 维护DBA生存空间,体现个体价值
数据库·dba
LB21126 小时前
Redis黑马点评 day01
数据库·redis·缓存