sql >> データベース >  >> RDS >> PostgreSQL

外部キー制約の問題なしにバックアップからPostgreSQLデータベースを復元する

    pg_dumpからバイナリダンプではなくSQLダンプを取得しているようです 。これにより、スキーマ(FKを含む)が上部にあり、その後にデータを再ロードするための一連のINSERTが続くSQLの山ができます。 <からのバイナリダンプcode> pg_dump pg_dump の場所をPhpPgAdminに伝えるには、少し追加の構成が必要なようです。 は。次に、そのバイナリダンプを pg_restoreにフィードします およびpg_restore 参照整合性の問題(より正確には、 pg_restore )を回避するために、すべてを適切な順序で再構築します。 すべてのデータを復元してから、制約を追加します。

    PhpPgAdminは、プレーンSQLダンプを操作する pg_restoreではなく 。これは信じがたいことですが、 pg_restoreの呼び出しに関するドキュメントには何も見つかりません。 。これが当てはまる場合は、SQLダンプを手動で編集し、すべてのFKを最後に移動する必要があります。

    SET CONSTRAINTSALLDEFERREDを追加してみることもできます。 SQLダンプの先頭で、トランザクションが終了するまで制約チェックを遅らせる必要があります。また、INSERTのブロック全体がトランザクション内に含まれていることを確認する必要があります。

    PhpPgAdminが実際にpg_restoreを呼び出せない場合 次に、 pg_dumpを使用することをお勧めします およびpg_restore バックアップ手順を必要に応じて制御できるように、手動で。申し訳ありませんが、FKを使用したデータベースのバックアップを処理できないデータベース管理ツールは、役に立たないよりも悪いです。うまくいけば、PhpPgAdminの使い方を知っている誰かが現れ、 pg_restoreの使い方を教えてくれます。 PhpPgAdminを使用します。



    1. MySQLは1行目のエラーで''の近くで使用する正しい構文

    2. 複数の列に適用された順序の場合、計算された列に作用しないことによる順序

    3. 警告:mysql_num_rows():指定された引数は有効なMySQL結果リソースではありません

    4. すべてのストアドプロシージャを一覧表示するクエリ