Обсуждение: pg_restore and drop table problems
Hi again, Version: 7.4.7-6sarge3 Structure of database: table A (id_a primary key) <-> table B (id_a,id_c - foreign keys from table A and table C) <-> table C (id_c primary key). Table A, table B and table C have one record for test purposes Problem: After error on pg_restore can't drop table that gave error! Steps to reproduce: 1. pg_dump with -Fc option from database 2. A column name on table C is changed 3. pg_restore using option -S and --disable-triggers with error identifying that a column on table C was changed 4. drop table B. Can't drop table giving ERROR: relation "B" has reltriggers = 0 What could be happening here? Best regards, Luís Sousa
=?ISO-8859-1?Q?Lu=EDs_Sousa?= <llsousa@ualg.pt> writes: > Steps to reproduce: > 1. pg_dump with -Fc option from database > 2. A column name on table C is changed > 3. pg_restore using option -S and --disable-triggers with error > identifying that a column on table C was changed > 4. drop table B. Can't drop table giving ERROR: relation "B" has > reltriggers = 0 --disable-triggers in 7.x is a crude hack that works by munging the system catalogs (specifically pg_class.reltriggers). You need to un-munge the catalog entries in the way that pg_restore evidently didn't have a chance to do. UPDATE pg_catalog.pg_class SET reltriggers = (SELECT pg_catalog.count(*) FROM pg_catalog.pg_trigger WHERE pg_class.oid = tgrelid) FROM pg_catalog.pg_namespace WHERE relnamespace = pg_namespace.oid AND nspname !~ '^pg_'; regards, tom lane