我知道标题很奇怪,但我对HOURS也有同样的错误。
我有这个查询
UPDATE tournaments SET password_req_count = password_req_count + 1 WHERE id = 20;
(你可以用任何东西替换20,这无关紧要)
此查询修改名为start_timestamp
的时间戳字段,始终将计算机设置为当前小时。
这个查询非常好,这没有错误:
UPDATE tournaments SET password_req_count = 0 WHERE id = 20;
这是在PHP代码中发生的,直到我删除了那个查询,然后停止了。然后我决定通过自己直接执行查询来尝试它,没有PHP,而且bug仍然在这里。
password_req_count
是一个int(我的意思是,我查了一下,问题不在这里)
这个查询没有出现在MySQL的查询历史记录中(你可以通过按" UP"键来快速重新制作查询...),这个错误不会出现出现在本地(它只出现在我的服务器上)。请注意,我将本地数据库导出到服务器的数据库中,所以这里的所有内容都完全相同。
MySQL服务器版本在我的服务器上是5.5,在家里是5.7,我认为这是问题所以我更新了它,但绝对没有改变。我也搜索了很多关于这一点,但我没有找到关于这个主题的话题。
我确实有查询日志,所以我确定没有编辑start_timestamp(显然除了这个奇怪的bug)。它无论如何都不应该被编辑。
修改:我刚刚将字段名称编辑为password_request_count
,因为password_req_count
已存在于另一个表中。但是这个bug还在这里。
在此处重播
编辑2 :这是一段视频,因为显然帖子不够清晰。请注意,我不能再按" up"再次执行UPDATE查询。触摸,请还注意到,如果我增加 password_req_count,则会编辑start_timestamp。 http://www.nx-lab.com/bug.mp4
编辑3 :如果我编辑其他字段(例如top_prize),显然也会发生这种情况
答案 0 :(得分:1)
这可能有几件事情,一个是桌面上的触发器。此代码将显示是否有...
SHOW TRIGGERS FROM tournaments;
另一件事,就是在这种情况下的正确答案,是对datetime列的自动更新。这会导致在对表进行更新时自动更新列中的日期和时间。
您可以在此处详细了解: https://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html
如果要删除自动更新,则需要使用ALTER表将其从Timestamp without change on update ...
列中删除ALTER TABLE leads MODIFY added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP