我喜歡觸發器的原因之一 - 他們只是工作。我討厭觸發器有一個原因 - 當它們不工作時,忘記嘗試調試。哦,甜蜜的沮喪。調試MySQL觸發器
基本上,我想看到更新,刪除,插入等運行的查詢。我想看看那個查詢...在某處,在我的終端或日誌中,確切地說MySQL如何以及何時執行它,以及可能的任何相應的輸出/錯誤。思考/黑客?
我試圖調試一個更新查詢與幾個聯接和什麼不是。我的查詢要複雜得多,但爲了簡潔,這裏是一個例子。
DELIMITER |
CREATE TRIGGER ireallyhateyourightnow AFTER UPDATE ON watch_this_table
FOR EACH ROW BEGIN
IF (OLD.my_value != NEW.my_value) THEN
update
my_table
set
my_column = NEW.my_value;
END IF;
END|
DELIMITER ;
以下是一些可能有助於影響建議或答案的附加上下文。再一次,我對語義/語法不太感興趣,並且更感興趣的是看到MySQL運行查詢,但無論如何,我現在對任何事情都是開放的。
- Strace不工作/顯示查詢。
- 非複製環境但是如果bin日誌顯示觸發器語句,我一定會設置它。
- 「顯示完整進程列表」顯示觸發器執行和/或內部執行的語句(在運行完整的進程列表之後,我從來沒有看到它們像perl可以運行一樣快,但我可能會錯過它)?
- 一般查詢日誌不顯示這些查詢(當然不是錯誤日誌)。
- 我沒有使用別名(了)。
- 創建觸發器時無語法錯誤。
- IF語句有效。
- 當我將新值變成了「測試/ TEMP」表,並手動運行更新查詢它的工作原理(我甚至竟以實際插入整個更新查詢)
- 我無法顯示你的查詢,但正如我剛纔提到的,它工作時我手動運行,如果有幫助。
- 我已經刪除了所有錯誤的字符,製表符,回車符,換行符等。
- 我認爲MySQL套接字只會顯示本地連接/數據而不是MySQL內部工作。
- MyISAM so INNODB日誌不是一個選項
- lsof似乎沒有顯示任何其他的使用。
- 我在CentOS 5.5上使用MySQL 5.0.77。
肯定,步入變灰。大概是因爲這是一個試驗? – Justin
'Step Into'命令必須在存儲過程代碼中處於活動狀態。你是否遵循了一步一步的指令(如何:啓動觸發器調試)? – Devart
謝謝Devart!非常好的一塊軟件。 – Justin