同様のワークフローが一般的であることは確かですが、私の検索では文書化された例は見つかりませんでした。
目標:
- ソース管理の利点をすべて享受できるように、すべての mysql (v5.1+) データベース定義を git で管理したいと考えています。
- スクリプトを編集してスクリプトを実行することにより、データベースへの変更を定義して、mysql シェルや GUI アプリではなく、選択したエディター (vim) でデータベース定義を編集できるようにしたいと考えています。
余談: 私は現在 mysql シェルを使用していますが、vim を使用して、シェルで扱いにくくなるルーチンとイベントを維持したいと考えています。
プラン:
初期スクリプトを取得するために「--no-data」オプションを指定して初期ダンプを実行しますが、それ以降のワークフローは、次のようにしたいと考えています: スクリプトの編集 -> コミット -> スクリプトの実行: データベースへの変更の実行 - > ddl をダンプ -> コミット。
警告:
次のようにデータベースをダンプすると:
mysqldump -u [user] -p [password] --no-data --routines > ddl.sql
以下が含まれます。
DROP TABLE IF EXISTS `[table]`; CREATE TABLE `[table]` ([table definition])
明らかに、スクリプトを実行するとテーブルが破棄され、再作成されます。私がしたいのは、テーブルが存在する場合は定義の変更でテーブルを更新し、そうでない場合は定義でテーブルを作成することです。複数の重複ブロックを維持するよりも、再利用される 1 つの [table]([table dfinition]) ブロックでテーブルを定義することをお勧めします。
同じスクリプトを使用してデータベースを更新し、別の環境で (データなしで) データベース定義を再作成できるように、初期ダンプ構文またはスクリプトを変更するにはどうすればよいですか?