gpt4 book ai didi

mysql - 避免在尝试获取锁时发现死锁;尝试在 MariaDB (MySQL) INSERT ON DUPLICATE KEY UPDATE 上重新启动事务

转载 作者:行者123 更新时间:2023-11-30 21:25:47 25 4
gpt4 key购买 nike

我有一个包含一堆行的简单表格。没有外键。多个列上有一个唯一键。

这是插入语句的示例:

INSERT INTO das_args (a,b,c,d) VALUES (1,2,3,4) ON DUPLICATE KEY UPDATE VALUES(1,2,3,4)

唯一键是(a,b,c)。

错误是:

(1213, 'Deadlock found when trying to get lock; try restarting transaction')

我读过 How to avoid mysql 'Deadlock found when trying to get lock; try restarting transaction'这是对不同用例触发相同错误消息的精彩讨论。

自动提交为真。这是唯一的声明。没有 BEGIN 或 COMMIT。

我看不出有什么方法可以重构它。只有两个客户端似乎在同时更新同一个唯一 key (这不应该发生,但确实发生了)。我的代码只是重新运行语句并成功,但我想消除死锁错误。

最佳答案

首先,我希望语法是

INSERT INTO das_args (a,b,c,d)
VALUES (1,2,3,4)
ON DUPLICATE KEY UPDATE d = VALUES(d);

至于死锁 -- 听起来交易中不止一条语句。让我们通过 COMMIT 查看 BEGIN

autocommit 的值是多少?

关于mysql - 避免在尝试获取锁时发现死锁;尝试在 MariaDB (MySQL) INSERT ON DUPLICATE KEY UPDATE 上重新启动事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59142436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com