私は MODx CMS を使用しており、共同作業に git を使用したいと考えています。ただし、ご存知のように、MODx はコードの場所の一部をデータベースに保存します。それで、私は知りたいのですが、ダンプを除いて共同作業のためにMySQLをバージョン化する方法は? ありがとう
3 に答える
おそらく、ストアドプロシージャやユーザー定義関数について話しているように思われますか?
いずれにせよ、最良の方法はmysqldumpです。おそらく、データは必要なく、ストアドプロシージャ、ユーザー定義関数、そしておそらくテーブル構造だけが必要です。mysqldumpには、何が出力されるかを制御するためのオプションがあります。
データベースを何らかの形式で保存する必要があります。SQL ファイルを使用してスキーマを更新するようにライブ データベースに指示することはできないため、SQL にすることはできません。
基本的に、データベースを更新するコマンドの増分セットを保存する必要があります。この場合、Git はあまり役に立ちません。独自のシステムを使用する必要があります。
これを実現する最も簡単な方法は、データベースのバージョンに番号を付けて、お気に入りのプログラミング言語での変更のみを保存することです。
ステップ 1: 現在のデータベース バージョンをどこかに保存します。
ステップ 2: データベースへのすべての更新をファイルに保存します。
update/mysql_1_to_2.py
update/mysql_2_to_3.py
# etc
ステップ 3: 初期データベースを作成する
update/mysql_0_to_1.py
そのシステムを使用する場合、現在使用中のバージョンとコード内の最新のバージョンを追跡するだけで済みます。更新が必要な場合は、すべてのmysql_x_to_y
スクリプトを実行するだけで、バージョン管理が完了します。mysql_0_to_1
最初のブートストラップを行うことができ、何らかの方法でリビジョンが 1000 に達した場合mysql_0_to_1000
は、ショートカットを使用するだけです。
上で概説したシステムは、リニア リポジトリでは非常にうまく機能するはずですが、ツリー (ブランチ、複数の開発者など) では少し使いにくいかもしれません。それでも何か思いつくことはあると思います。
データベースのバージョン管理をコードのバージョン管理に追加したい場合は、Liquibase で確認する必要があります。すべてをもう一度繰り返すのを避けるために、トピックに関する私の古い完全な回答