P粉6499901632023-08-31 15:04:19
我會將所有內容保留在過程中:然後與此行為相關的所有程式碼都位於一個位置。另外:死鎖不會跟隨您的 CALL 語句的執行而不是繼續執行嗎?如果繼續進行,那麼問題可能已經解決了,那麼我們就什麼都不等待了。此外,死鎖後的交易只會在死鎖解決後執行。
我對您的程式碼的處理方法是:
CREATE PROCEDURE manageAccounts() BEGIN DECLARE totalTrys INT DEFAULT 0; DECLARE EXIT HANDLER FOR SQLEXCEPTION GET DIAGNOSTICS CONDITION 1 @err_num = MYSQL_ERRNO; CALL guardi.prod_update_guardi_accounts(); WHILE(@err_num = 1213 AND totalTrys < 4) DO SET totalTrys = totalTrys + 1; SELECT SLEEP(900); CALL guardi.prod_update_guardi_accounts(); END WHILE; END;
您必須對此進行測試:未經測試,因此拼字錯誤並非不可能。