有一些类似的问题,但我会把它扔进去。
基本上,我有一个时间戳列(这是一个 int ),我的一个更新只是更新这个时间戳列,有时它几乎没有明显的距离。例如,它可能会从1316631442变为1316631877.两者之间没有太大区别。
所以记录正在更新,我可以在查询运行之前检查phpMyAdmin,然后查看差异。但是,我正在对受影响的行计数执行var_dump()并保持为0。
如果我同时将另一列更新为其他值,则受影响的行为1.
那么触发行受影响需要什么?即使它因为更新成功而受到影响。
此外,我正在使用Laravel PHP框架及其查询构建器。目前正在那里进行一些调试,看看有什么东西可能会关闭,但到目前为止看起来都很好。
编辑:对不起,我上面写错了。当我完全更改另一列的值时,受影响的行为1,而不是0。答案 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错误。
是时候让服务器管理员更新一些内容了吗?