我有一张包含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
编辑: 我已经阅读了其他问题,但是完全不同,我已经发布了答案
答案 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)
sql-mode =“”
保存此文件
systemctl重新启动mysqld
示例:
UPDATE TABLE测试集已修改='0000-00-00 00:00:00'