2016-09-23 4 views
0

私は誤ってテーブルをpg_classから削除しました。スキーマ内の別のサーバに同じテーブルが存在します。どのように復元するのですか?pg_classから誤ってテーブルを削除した場合、それをバックアップから復元する方法はありますか?

ERROR: type "food_ingredients" already exists` 
HINT: A relation has an associated type of the same name, so you must use a name that doesn't conflict with any existing type.` 
ERROR: relation "food_ingredients" does not exist` 
ERROR: syntax error at or near "19411"` 
LINE 1: 19411 10405 2074 45.3333333333 0.17550085492131515 NULL NULL...` 
ERROR: relation "food_ingredients" does not exist` 

food_ingredientsは私がするpg_classから削除された表である -

私はこれは私が得ているものです。この

psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}` 

を試してみました。

答えて

0

これは、システムカタログを使いこなすことから得られるものです。

簡潔で正しい回答は”のバックアップからリストアする“ですが、それはあなたが探していた答えではないことが分かります。

テーブルに属するタイプ、テーブルのすべてのインデックス、すべての制約、トーストテーブルなどを削除できますが、削除したり、削除したりしないでください以前よりも大きな混乱。
さらに、テーブルファイルは残されており、識別して削除することは難しいでしょう。

試してみて、あなたがドロップされたpg_class行を再作成するために魅力的だろうが、あなたが直接特定のoidを挿入するか、またはその列を更新することはできませんので、正しいoidでそれを作成することはできません。

データベースクラスタ全体をpg_dumpallでダンプし、initdbで新しいクラスタを作成してバックアップを復元することもできますが、データの不一致により失敗する可能性があります。

本当に、最もよいのはバックアップを復元することです。

+0

お返事ありがとうございます!私はデータベース全体を削除し、バックアップを復元しました。他に何も働いていなかった。 – asdf

関連する問題