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

时间:2011-09-21 19:08:23

标签: php mysql pdo timestamp laravel

有一些类似的问题,但我会把它扔进去。

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

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

如果我同时将另一列更新为其他值,则受影响的行为1.

那么触发行受影响需要什么?即使它因为更新成功而受到影响。

此外,我正在使用Laravel PHP框架及其查询构建器。目前正在那里进行一些调试,看看有什么东西可能会关闭,但到目前为止看起来都很好。

编辑:对不起,我上面写错了。当我完全更改另一列的值时,受影响的行为1,而不是0。

2 个答案:

答案 0 :(得分:3)

对于那些好奇的我使用INSERT INTO ...在DUPLICATE KEY UPDATE上实现所需的结果。我仍然无法弄清楚为什么MySQL没有报告该记录受到影响。

我也尝试使用PHPs mysql_query()和相关函数来检查受影响的行,但它也没有那样工作。也许MySQL并不认为这一变化值得将该记录标记为受影响。

答案 1 :(得分:0)

我可以用MySql 5.1复制问题,但不能用Mysql 5.7复制。

在早期版本中

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

会更新时间戳,但消息是零行已受影响。

使用更高版本的MySql,同一个查询会让我受到影响。

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

是时候让服务器管理员更新一些内容了吗?