以我不理解的方式窃听的SQL查询

时间:2017-08-21 03:29:38

标签: mysql sql

我知道标题很奇怪,但我对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),显然也会发生这种情况

1 个答案:

答案 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