サーバー上のダンプファイルからデータベースを復元しているときに、次のエラーが発生します。
エラー:リレーション "table_id_seq"は存在しません
行1:SELECT pg_catalog.setval( 'table_id_seq'、362、true);
これが私のダンプコマンドです:
pg_dump -U username -h localhost db_name > filename.sql
サーバーでの復元コマンドは次のとおりです。
psql -U username -h localhost db_name < filename.sql
助けてください、ありがとう。
@clemensから情報を入手して調査したところ、セクション_CREATE SEQUENCE table_id_seq
_のダンプファイルに_AS integer
_というステートメントがあり、新しいデータベースに復元したときにnextval()
シーケンスの場合。ステートメント_AS integer
_を_CREATE SEQUENCE
_セクションから削除すると、それが機能します。
私のダンプファイル:
_CREATE SEQUENCE table_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
_
ダンプファイルから_AS integer
_を削除します
_CREATE SEQUENCE table_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
_
ダンプファイルは、任意のテキストエディタ(メモ帳、Vimなど)で開くことができます。検索する table_id_seq
。あなたは次のようなステートメントを見つける必要があります
CREATE SEQUENCE table_id_seq ...
それが欠落している場合は、ダンプに何か奇妙なことがあります。追加することでそれを修正するかもしれません
CREATE SEQUENCE table_id_seq;
声明の直前
SELECT pg_catalog.setval('table_id_seq', 362, true);
エラーメッセージから。
しかし、これは単なるハックです。あなたはダンプがなぜその間違いをしたのかを知ることになっていた。しかし、それにはより多くの情報が必要です。