pg_dump игнорирует последовательность таблиц? - PullRequest
14 голосов
/ 06 января 2011

В последнее время я играю с PostgreSQL и не могу понять, как сделать резервную копию и восстановить одну таблицу.

Я использовал pgadmin3 для резервного копирования одной таблицы в моей базе данных, чтобы скопировать ее на другой сервер. Когда я пытаюсь сделать pg_restore для файла, я получаю сообщения об ошибках, в которых говорится, что последовательность не существует:

pg_restore: [archiver (db)] could not execute query: ERROR:  relation "businesses_id_seq" does not exist
    Command was: 
CREATE TABLE businesses (
    id integer DEFAULT nextval('businesses_id_seq'::regclass) NOT NULL,
    name character varyin...

Похоже, что в файле дампа не было последовательности для моего автоинкрементного столбца. Как мне это включить?

1 Ответ

15 голосов
/ 06 января 2011

дамп только по таблице - сбросит только таблицу. Вам необходимо вывести последовательность отдельно в дополнение к таблице.

Если вы не знаете свою последовательность, вы можете перечислить ее с \d yourtable в psql. В строке, в которой находится ваша последовательность, вы увидите что-то похожее на: nextval('yourtable_id_seq'::regclass')

Затем из командной строки pgdump -t yourtable_id_seq

http://www.postgresql.org/docs/9.0/static/app-pgdump.html

...