MySQL时间戳记录正在更新,但受影响的行仍然为0


MySQL timestamp record being updated but affected rows remains 0

还有一些类似的问题,但我将把这个问题放在一起。

基本上,我有一个时间戳列(这是一个int),我的一个更新只是更新这个时间戳列,有时它是一个几乎不明显的距离。例如,它可能从1316631442更改为1316631877。两者之间并没有太大的区别。

所以记录正在更新,我可以检查在phpMyAdmin查询运行之前,然后之后,看看差异。但是,我对受影响的行数执行var_dump(),它仍然为0。

如果我同时将另一列更新为不同的值,那么受影响的行是1。

那么如何触发受影响的行呢?尽管由于更新成功而受到影响。

另外,我正在使用Laravel PHP框架和它的查询生成器。目前正在做一些调试,看看是否有些东西可能会关闭,但到目前为止,一切似乎都很好。

编辑:抱歉我在上面打错了一些东西。当我完全改变另一列的值时,受影响的行是1,而不是0。

对于那些好奇的人,我使用INSERT INTO…ON DUPLICATE KEY UPDATE以达到期望的结果。我仍然不明白为什么MySQL没有报告记录受到影响。

我还尝试使用php mysql_query()和相关函数来检查受影响的行,但它也没有像那样工作。也许MySQL不认为这个更改值得将记录标记为受影响。

我可以复制MySql 5.1的问题,但不是MySql 5.7。

在早期版本

UPDATE `test`
SET
    `time` = TIMESTAMPADD(MINUTE, 10, NOW())
WHERE
    `id = 1

确实更新时间戳,但是消息是没有行受到影响。

对于更新版本的MySql,相同的查询只会给我一行影响。

这似乎是一个MySql的错误已被修复。

时间让服务器管理员更新一些东西?