0
我使用COPY命令在數據庫中加載一堆數據,然後創建主鍵和外鍵。Postgres:違反外鍵約束
當我創建了一個外鍵時,我收到了錯誤消息:violates foreign key constraint "some_fkey"
。有沒有一種方法可以提高日誌級別,以便我可以看到發生這種違規事件的行,以便我可以返回並調試/檢查數據?
我使用COPY命令在數據庫中加載一堆數據,然後創建主鍵和外鍵。Postgres:違反外鍵約束
當我創建了一個外鍵時,我收到了錯誤消息:violates foreign key constraint "some_fkey"
。有沒有一種方法可以提高日誌級別,以便我可以看到發生這種違規事件的行,以便我可以返回並調試/檢查數據?
一種解決方法:
假設你的表是這樣的:
CREATE TABLE a (a_id INTEGER PRIMARY KEY, x TEXT);
CREATE TABLE b (b_id INTEGER PRIMARY KEY, a_id INTEGER, x TEXT);
而下面的外鍵的創建爲您提供了錯誤:
ALTER TABLE b ADD CONSTRAINT a_a_id_fk FOREIGN KEY (a_id) REFERENCES a (a_id) ON UPDATE CASCADE ON DELETE RESTRICT;
您可以加入兩個表得到有問題的行:
SELECT b_id, a_id FROM b LEFT JOIN a USING (a_id) WHERE a.a_id IS NULL;
讓我們來看看!
的樣本數據:
INSERT INTO a VALUES (1, 'a'), (2, 'b'), (3, 'c');
INSERT INTO b VALUES (1, 1, 'x'), (2, 3, 'y'), (3, 1000, 'z');
而且上面的查詢結果:
b_id | a_id
------+------
3 | 1000
(1 row)
當然,輝煌的答案!謝謝 – samol
PostgreSQL的哪個版本? –