错误的日期时间值:“ 0000-00-00 00:00:00”列

时间:2019-07-15 18:23:45

标签: mysql datetime

我有一张包含2M条记录的表,并且直到几个小时前一切正常。 突然,它对以前可以运行一年以上的查询抛出错误。 问题在于,将正确的dateTime之类的 DEPARTMENT_NAME ------------------------------ SE ```none ---Difference in Output--- (select max(count(department_id)) from staff)group by departmentDEPARTMENT_idNAME *------------------------------ SERROR at line 4: ORA-00918: column ambiguously defined Summary of tests +------------------------------+ | 2 tests run / 0 test passed | +------------------------------+ 插入时间戳列会返回错误:

  

第1行“ created_at”列的日期时间值不正确:“ 0000-00-00 00:00:00”

1-我做了重复的表结构,并且查询在重复的表上工作正常
2-我今天确实跑过2019-07-15 22:22:47
3- OS:CentOS版本6.10(最终版)
4- MySql:服务器版本:8.0.16 MySQL社区服务器-GPL

编辑:  我已经阅读了其他问题,但是完全不同,我已经发布了答案

2 个答案:

答案 0 :(得分:0)

我找到了它,将其发布为可以帮助他人的答案

似乎最新的mysql更新添加了一些新的角色来比较datetime值,但是我认为抛出的错误是完全不相关的。 我在表上有一个触发器,该触发器检查一些参数,还检查created_at列是否等于'0000-00-00 00:00:00',然后将其更改为current_timestamp。触发的一部分是

IF(NEW.created_at = '0000-00-00 00:00:00') THEN
    SET NEW.created_at = current_timestamp();
END IF  

这只是一个简单的比较,结果应为true或false,并且不应引发零日期异常
但是我删除了这部分,现在一切都正常了

答案 1 :(得分:0)

  1. 编辑/etc/my.cnf并添加行

sql-mode =“”

保存此文件

  1. 重新启动MySQL服务

systemctl重新启动mysqld

  1. 尝试您的sql命令,

示例:

UPDATE TABLE测试集已修改='0000-00-00 00:00:00'