3

mysqldumpは、テーブル (およびビュー) をアルファベット順にリストしたダンプを作成します。テーブル間に外部キー関係がある場合、これはあまり便利ではありませんが、次のコマンドを実行することで問題を簡単に解決できます。

SET FOREIGN_KEY_CHECKS=0;

ビュー vwapple がビュー vworange に依存している状況があります。mysqldump を使用すると、vwapple がリストされ、vworange の前に実行されます。これは、「ビュー vworange が存在しません」というエラー メッセージが表示されるため、問題があります。

この状況はどのように解決されますか?ビューにはテーブルと同様のソリューションがありますか? それとも、この問題を回避するためだけに、各ビューを独立させたほうがよいのでしょうか?


: Python スクリプトを使用してデータベースを復元しています。各データベース オブジェクトを個別にソース管理したいので、各ビューとテーブルは個別の .sql ファイルにあります。

4

1 に答える 1

4

の最近のバージョンではmysqldump、データベース全体をダンプするときに、次のように解決します。データベース内のすべてのビューに対して、最初に同じ構造の空のテーブルを作成し、ビューを作成する前に各プレースホルダー テーブルを削除してビューを作成します。テーブルをビューに置き換えても、それに依存するビューに害はないようです。

ビューの行にはテーブルの行よりも多くのデータが含まれている可能性があるため、一部のプレースホルダー テーブルを作成できず、一部のダンプは手動で介入しないと復元できません。このため、いくつかの作業が必要になる場合がありますが、ビューのトポロジカル ソートが推奨されます。

于 2012-07-21T23:51:33.650 に答える