7

有一些类似的问题,但我会把这个混在一起。

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

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

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

那么触发该行受到影响需要什么?即使自从更新成功以来它受到了影响。

另外,我正在使用 Laravel PHP 框架及其查询构建器。目前在那里做一些调试,看看是否有问题,但到目前为止一切似乎都很好。

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

4

2 回答 2

3

对于那些好奇的人,我求助于使用 INSERT INTO... ON DUPLICATE KEY UPDATE 来达到预期的结果。我仍然无法弄清楚为什么 MySQL 没有报告记录受到影响。

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

于 2011-09-22T16:16:59.990 回答
0

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

在早期版本中

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

确实更新了时间戳,但消息是零行已受到影响。

使用更高版本的 MySql 相同的查询给我一行受影响。

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

是时候让服务器管理员更新一些东西了?

于 2017-02-16T09:00:09.643 回答