2016-11-09 50 views
0

當我嘗試刪除從表1的紀錄我收到此錯誤信息:爲什麼我得到SQL狀態:23503上不存在的外鍵

ERROR: update or delete on "table1" violates foreign key constraint "<unnamed>" on "table2" 
DETAIL: Key (idtb1)=(1569) is still referenced from table "table2". 
********** Error ********** 

ERROR: update or delete on "table1" violates foreign key constraint "<unnamed>" on "table2" 
SQL state: 23503 
Detail: Key (idtb1)=(1569) is still referenced from table "table2". 

的問題是,我沒有任何外鍵在table2上。

這裏創建表

CREATE TABLE table1 
(
    idtb1 integer NOT NULL DEFAULT nextval('"table1_idtb1_seq"'::text), 
    nometb1 character varying(16), 
    stato character varying(4), 
    capit character(1), 
    email character varying(2000), 
    impianti boolean NOT NULL DEFAULT true 
) 
WITH OIDS; 
ALTER TABLE table1 
    OWNER TO postgres; 

    CREATE TABLE table2 
(
    idtb2 integer NOT NULL DEFAULT nextval('"table2_idtb2_seq"'::text), 
    idn integer DEFAULT 0, 
    dataarr date, 
    oraarr time without time zone, 
    arrinc character varying(1), 
    orind character varying(15), 
    pprovenienza character varying(30), 
    flgaggiunte character(1), 
    ocm text, 
    flageliminato character varying(1), 
    nomea character varying(50), 
    nomeb character varying(50), 
    pesc double precision 
) 
WITH OIDS; 
ALTER TABLE table2 
    OWNER TO postgres; 

腳本是一個古老的數據庫

「在x86_64-未知Linux的GNU,由GCC海灣合作委員會(GCC)編譯的PostgreSQL 4.4.7 8.0.26 20120313(Red Hat 4.4.7-4)「

我該如何繼續?

+1

'WITH OIDS'已棄用,不應再使用。如果你刪除它,這會改變嗎?另外:你正在使用的**精確** Postgres版本是什麼? 'select version()' –

+0

爲什麼你使用這樣一個過時和不受支持的版本?您的示例適用於任何支持的Postgres版本。 –

+0

是的,是舊的過時和不受支持的版本,但現在無法更新。 –

回答

0

這看起來有點像數據損壞。

也許您應該安裝PostgreSQL 9.6,pg_dumpall羣集並將其加載到9.6數據庫中。也許這會讓問題消失。

相關問題