如何在使用closure_tree并行操作具有层次结构上的公共属性的模型集时避免数据库死锁?并发编辑闭合树层次结构时的死锁
他们目前在以下口味:
当发出#append/prepend_sibling
Mysql2::Error: Deadlock found when trying to get lock; try restarting transaction:
UPDATE `elements` SET `sort_order` = `sort_order` + 1 WHERE (`parent_id` = 28035 AND `sort_order` >= 1)
Mysql2::Error: Deadlock found when trying to get lock; try restarting transaction:
UPDATE `elements` SET `sort_order` = `sort_order` - 1 WHERE (`parent_id` = 21168 AND `sort_order` <= -1)
重建时关闭表
Mysql2::Error: Deadlock found when trying to get lock; try restarting transaction:
DELETE FROM `element_hierarchies`
WHERE descendant_id IN (
SELECT DISTINCT descendant_id
FROM (SELECT descendant_id
FROM `element_hierarchies`
WHERE ancestor_id = 16332
) AS x)
OR descendant_id = 16332
Mysql2::Error: Deadlock found when trying to get lock; try restarting transaction:
INSERT INTO `element_hierarchies` (`ancestor_id`, `descendant_id`, `generations`) VALUES (30910, 30910, 0)
with_advisory_lock看起来很有希望。有什么想法吗?
此问题已得到解决。请升级到v3.7.3。 – mrm
你能看看我的问题在http://stackoverflow.com/questions/41388300/use-ruby-closure-tree-gem-without-rails? – peter