Обсуждение: pg_dump:cannot find function for trigger
Hello: After creating the tables tb_bombas and tb_abastecimentos as follows \connect f drop table tb_bombas; CREATE TABLE "tb_bombas" ( "id_bomba" int2 PRIMARY KEY, "tipo_bomba" char, "estado_bomba" int2, "data_atualizacao" datetime); CREATE TABLE "tb_abastecimentos" ( "id_bomba" int2 references tb_bombas(id_bomba), "data_abastecimento" datetime NOT NULL, "volume" int4, "valor" int4, "estado" character, constraint pk_abastecimentos primary key(id_bomba,data_abastecimento) ); and using pg_dump , I got the following error message : -- last builtin oid is 17216 -- reading user-defined types -- reading user-defined functions -- reading user-defined aggregates -- reading user-defined operators -- reading user-defined tables -- finding Triggers for relation: 'tb_bombas' getTables(): relation 'tb_bombas': cannot find function with oid 1654 for trigger RI_ConstraintTrigger_28974 But I can find de procedure with oid 1654 in the pg_proc, and the reference to this function in pg_trigger: pg_trigger tgrelid|tgname |tgfoid|tgtype|tgenabled|tgisconstraint|tgconstrname|tgconstrrelid|tgdeferrable|tginitdeferred|tgnargs|tgattr|tgargs -------+--------------------------+------+------+---------+--------------+------------+-------------+------------+--------------+-------+------+-------------------------------------------------------------------------------------- 28928|RI_ConstraintTrigger_28974| 1654| 9|t |t |<unnamed> | 28956|f |f | 6| |<unnamed>\000tb_abastecimentos\000tb_bombas\000UNSPECIFIED\000id_bomba\000id_bomba\000 (1 row) pg_proc proname |proowner|prolang|proisinh|proistrusted|proiscachable|pronargs|proretset|prorettype|proargtypes|probyte_pct|properbyte_cpu|propercall_cpu|prooutin_ratio|prosrc |probin --------------------+--------+-------+--------+------------+-------------+--------+---------+----------+-----------+-----------+--------------+--------------+--------------+--------------------+------ RI_FKey_noaction_del| 40| 11|f |t |f | 0|f | 0| | 100| 0| 0| 100|RI_FKey_noaction_del|- (1 row) I can't dump my database because the error makes pg_dump to exit. So, i will be grateful for any help. Thanks.
Claudio Grillo <cjg@certi.ufsc.br> writes: > getTables(): relation 'tb_bombas': cannot find function with oid 1654 > for trigger RI_ConstraintTrigger_28974 > But I can find de procedure with oid 1654 in the pg_proc, and the > reference to this function in pg_trigger: > pg_proc > proname > |proowner|prolang|proisinh|proistrusted|proiscachable|pronargs|proretset|prorettype|proargtypes|probyte_pct|properbyte_cpu|propercall_cpu|prooutin_ratio|prosrc > |probin > --------------------+--------+-------+--------+------------+-------------+--------+---------+----------+-----------+-----------+--------------+--------------+--------------+--------------------+------ > RI_FKey_noaction_del| 40| 11|f |t |f > | 0|f | 0| | 100| > 0| 0| 100|RI_FKey_noaction_del|- > (1 row) Hmm. Do you have a user with sysid 40 in pg_shadow? pg_dump tends to get confused by 'owner' links that point to nonexistent users. regards, tom lane
Hi : I was using the wrong version(6.5.2) of pg_dump,that was in my PATH !!! With the correct version(7.0.2) the dump was OK !! Thanks !! Claudio Grillo Quoting Tom Lane <tgl@sss.pgh.pa.us>: > Claudio Grillo <cjg@certi.ufsc.br> writes: > > getTables(): relation 'tb_bombas': cannot find function with oid 1654 > > for trigger RI_ConstraintTrigger_28974 > > > But I can find de procedure with oid 1654 in the pg_proc, and the > > reference to this function in pg_trigger: > > > pg_proc > > proname > > > |proowner|prolang|proisinh|proistrusted|proiscachable|pronargs|proretset|prorettype|proargtypes|probyte_pct|properbyte_cpu|propercall_cpu|prooutin_ratio|prosrc > > > |probin > > > --------------------+--------+-------+--------+------------+-------------+--------+---------+----------+-----------+-----------+--------------+--------------+--------------+--------------------+------ > > > RI_FKey_noaction_del| 40| 11|f |t |f > > | 0|f | 0| | 100| > > 0| 0| 100|RI_FKey_noaction_del|- > > (1 row) > > > Hmm. Do you have a user with sysid 40 in pg_shadow? pg_dump tends to > get confused by 'owner' links that point to nonexistent users. > > regards, tom lane >