Позвольте мне начать с того, что я администратор Linux/Unix. При этом мой менеджер поручил мне перенести старые базы данных PostgreSQL на сервер RedHat под управлением 8.4.20. Мне удалось перенести 7.2.1 db, но у меня возникли проблемы с перемещением 7.4.20 db.
Я использую pg_dump –c filename
и psql < filename
. Для проблемной базы данных все работает, пока я не доберусь до оператора CREATE CONSTRAINT TRIGGER
. Если я запускаю его так, как он есть в файле, я получаю:
ВНИМАНИЕ: игнорирование неполной группы триггеров для ограничения "" данные FOREIGN KEY(ups) REFERENCES upsinfo(ups) DETAIL: найден триггер DELETE ссылочной таблицы. СОЗДАТЬ ТРИГГЕР
Если я запускаю set schema 'pg_catalog';
, я получаю:
ОШИБКА: отношение "upsinfo" не существует
Используемые таблицы (я думаю):
CREATE TABLE upsinfo (
ups text NOT NULL,
ipaddr inet,
rcomm text,
wcomm text,
reachable boolean,
managed boolean,
comments text,
region text
);
CREATE TABLE data (
date timestamp with time zone,
ups text,
mib text,
value text
);
Оператор триггера проблемы триггера:
CREATE CONSTRAINT TRIGGER "<unnamed>"
AFTER DELETE ON upsinfo
FROM data
NOT DEFERRABLE INITIALLY IMMEDIATE
FOR EACH ROW
EXECUTE PROCEDURE "RI_FKey_cascade_del"('<unnamed>', 'data', 'upsinfo', 'UNSPECIFIED', 'ups', 'ups');
Я знаю, что функция RI_FKey_cascade_del
определяется по-разному в разных версиях pg_catalog. Обратите внимание, что для параметра search_path установлено значение «public, pg_catalog», поэтому я также не понимаю, почему я должен устанавливать схему.
Опять же, я не настоящий администратор баз данных PostgreSQL, поэтому постарайтесь быть добрее.