以前cakePHPにてマイグレーションの手法を紹介したのですが、当然PHP以外をつかっていたり、PHPでもcakeを使っていなければこの方法は通用しません。
何か、汎用的にデータベースの構造の差分がチェックできるツールはないかなと思い、探していたところ下記ツールがよいとの情報を得て、早速試してみました。
以前紹介したA5M2にあればベストだったんですが、この機能はついていませんでした・・・
MySQL workbench
https://www-jp.mysql.com/products/workbench/
Oracleのアカウントとかをもってないと登録作業なんかがいろいろと面倒くさいです。
また日本語化することもできるようですが、かなり面倒くさそうだったのと(爆)、情報が結構でてくるので、なんとか英語でやることにしました。
ちなみに2015年12月上旬現在、最新は6.3です。
Contents
mysqldump
差分のチェックですが、データベースを直接みてもいいですが、自分は怖かったので構造だけをダンプし、そのファイルをベースに差分をチェックしました。
下記コマンドでダンプを行います。
1 |
mysqldump -u ユーザー名 -p データベース名 --no-data --compact > 任意のSQLファイル名.sql |
実行したあとにファイルをみているとひたすらcreate文が書かれているのがわかると思います。
MySQL workbentch
ここからツールを使います。
ツールを起動後、File→NewModelを実行すると新しい画面が作られます。
新しい画面に移って、Database→Synchronize With Any Sourceを押すとダイアログが開きますので、Next。
Database To TakeUpdates FromとDatabase To Receive Updatesにそれぞれdumpで作ったテーブルの構造ファイル(~.sql)を入れてあげればOKです。差分SQLを保存するパスもいれてあげましょう。
その後、Nextを入れた後、チェックボックスをいれてあげて、進めてあげると差分チェックをしてくれます。
SQL文も書かれていますが、これはReceive UpdatesをTakeUpdatesにするためのSQL文という意味です。
参考リンク