如何在使用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