■ 内容
開発環境のデータベースで修正した項目の内容を実行環境のデータベースに反映する作業というのは結構な頻度であると思います。
一つ二つの変更であれば手作業でやってもいいのですが、数が多くなってくると面倒だったり、入力ミスが起きたりしてトラブルの原因になる場合が多いと思います。
私も今までは両環境のデータベースをダンプ比較し、手動で更新していたのですが、大きめの仕様変更が入ってくるようになり、手間になってきたのでどうしようか調べてみたところ、MySQLWorkbenchで出来るようなので試してみました。 それの備忘録。
■ 用意するもの
MySQLWorkBench(5.2.34)
■ 前提
開発環境と実行環境に接続できる状態()
■ ざっくりと説明
開発側のデータベースを読み込んで一時データを作成、それと実行環境データベースを比較して、差分をSQL文にして同期
■ 作業
1,モデルの作成
MySQL WorkBenchを起動して赤枠内の「Create EER Model From Existing Database」をクリック
2,開発環境のデータベースへ接続
Stored Connectionから定義済みのコネクションを選択するか、接続情報を入力して「Next」をクリック
データベースの解析が成功すると以下の画面になるので「Next」をクリック
エラーが発生した場合は接続情報やデータベースの定義を見直してください
対象のスキーマにチェックを入れて「Next」をクリック
何かの解析が成功すると以下の画面になるので「Next」をクリック
対象のテーブル等の情報が表示されるので「Place imported objects on a diagram」のチェックを外して「Execute」をクリック
※ ここをチェック入れたままにするとER図が生成されて大変なことになります(個人的に)
成功したら「Next」をクリック
「Finish」をクリック
モデルが出来ました。
3,実行環境への更新
メニュー「Database」-「Synchronize Model...」をクリック
Stored Connectionから定義済みのコネクションを選択するか、接続情報を入力して「Next」をクリック
更新先のスキーマを選択して「Next」をクリック
「Next」をクリック
差分が表示されるので確認して「Next」をクリック
同期したくないテーブルがある場合は選択して「Ignore」ボタンをクリックして無効にします。
同期用のSQL文が生成されるので、そのまま同期を開始する場合は「Execute」、一度ファイルに保存する場合は「Save to File」をクリック
以上で同期が行われ、開発環境での変更が実行環境へ反映されます。
エラーが発生する場合は主キーが変とか、デフォルト値がおかしいとかメッセージが出ますのでそれに合わせる必要がありそうです。
また、当然の事ですが、何かあってもいいようにバックアップを取った後でやることをお勧めします。