小编Mar*_*oni的帖子

MariaDB - “ERROR 1205 ... Lock wait timeout exceeded; ...” 执行影响不同行的多个并行更新时

我们使用 MariaDB 10.1.19 托管旧数据库。我们有一个lpr表(在 InnoDB 上),我们想在其中从文本列移动gate到规范化外键gate_id。我们的代码并行执行 UPDATE,如下所示:

UPDATE lpr SET gate_id=1 WHERE gate_id IS null AND gate LIKE '%[1]%'
UPDATE lpr SET gate_id=2 WHERE gate_id IS null AND gate LIKE '%[2]%'
UPDATE lpr SET gate_id=3 WHERE gate_id IS null AND gate LIKE '%[3]%'
UPDATE lpr SET gate_id=4 WHERE gate_id IS null AND gate LIKE '%[4]%'
...
Run Code Online (Sandbox Code Playgroud)

由于受所有 UPDATE 影响的行是不相交的,并且表位于 InnoDB 上,我们不会期望锁争用,但我们得到错误:

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

对于所有更新。提高innodb_lock_wait_timeout到100〜并不能改变什么,以及设置 …

mysql mariadb mariadb-10.1

5
推荐指数
1
解决办法
6516
查看次数

标签 统计

mariadb ×1

mariadb-10.1 ×1

mysql ×1