我检查了这个问题:MySQL update query updates one column but not other column,但在这种情况下,问题是文件版本不正确。
在我的情况下,我在CentOS 7上的MariaDB 10.1.19中有一个自动运行的UPDATE查询,在17884次总运行(~99.99%成功率:)中运行了17882次。
修改了价值以保护无辜者。请注意,这是按原样自动生成的:
UPDATE table AS t
SET workflow_id=376280614,
list="list@client",
contact=t.contactdate,
fail_8=(t.fail_8 * 0.1),
fail_10=(t.fail_10 * 0.1),
fail_12=(t.fail_12 * 0.1),
fail_14=(t.fail_14 * 0.1),
fail_16=(t.fail_16 * 0.1),
fail_18=(t.fail_18 * 0.1),
fail_sa=(t.fail_sa * 0.1),
result='',
contactdate=NULL,
USER='',
status="Verify",
entrydate=now()
WHERE t.status='New'
AND t.result='match'
AND t.locked_for=''
AND t.contactdate < (now()-interval 5 MINUTE)
AND t.client_id=123
AND t.campaign_id = 1
因此,在99,99%的案例中,更新有效,所有值都会更新。
然而,有两种情况,15列中的2列确实不更新,即使它们应该有。而且,在这两种情况下,同一行的其他列进行了更新。这就好像某些东西阻止了更新某些列,但MariaDB或我们现有的任何日志记录都没有抛出任何错误。
知道怎么可能吗?如果有锁或死锁,行中什么都不会更新?