我從表中刪除此行,它還包含了許多對FKS級聯,最終它給了我這個錯誤:在Postgresql中,如何調試刪除級聯後發生的錯誤?
ERROR: insert or update on table "foo_route" violates foreign key constraint "foo_route_bar_fk"
SQL state: 23503
Detail: Key (bar_key)=(2176) is not present in table "bar".
foo_route_bar_fk的定義是這樣的:
ALTER TABLE foo_route
ADD CONSTRAINT foo_route_bar_fk FOREIGN KEY (bar_key) REFERENCES bar (bar_key)
MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE;
我通過刪除與這兩個表無關的表來得到這個錯誤。我認爲發生的事情是觸發器或級聯引起的這個錯誤,但很難找出原因。
我的問題是,你如何在postgresql中調試像這樣的問題? 導致此錯誤的一系列步驟是什麼? Postgresql只告訴我它在失敗之前做的最後一件事的結果。如果這是代碼,那麼錯誤會提供非常有用的堆棧跟蹤。有沒有辦法在Postgresql中看到類似的東西?
您應該在服務器日誌中找到更多詳細信息。我懷疑你上面顯示的是你的客戶打印的錯誤信息。 –
@PeterEisentraut是的,這是正確的,它來自客戶端。我會看看server.log。有沒有有用的日誌記錄默認關閉? –
與此相關的內容應默認打開。但很多其他有用的東西不是。 –