Perlゼミ(サンプルコードPerl入門)

新着情報 8/21(火) 7時更新 Perl入学式 イベント情報

2011年11月01日

MySQL::Diff - MySQLのデータベースの差分を調べる

  1. Perl
  2. モジュール
  3. here

 MySQLのデータベースの差分から、差分をなくすようなコマンドを自動生成するツールを探していたら、MySQL::Diffというモジュールを発見した。このモジュールにはmysqldiffというコマンドラインツールがついているので、通常はこちらを使うのが良いみたい。

 開発環境と本番環境の差分を埋めるのにとても役立つ。すべての差分を表示してくれるわけではなく、テーブル定義に関する部分だけのようなので、トリガやインデックスについては、自分で設定する必要があるようです。

 ドキュメントにはオプションの説明がないようなので、--helpコマンドで確認できる。

mysqldiff --help

 まずデータベースのテーブル定義をmysqldumpで取得しましょう。今は開発環境にいて開発環境のデータベースサーバーに変更を加えていると仮定します。

mysqldump -d -uken db > db_devel

 本番環境にはsshで接続できると仮定しましょう。そうするとsshでコマンドを実行してリダイレクトしましょう。

ssh ken@remotehost mysqldump -d -uken db > db_production

 mysqldiffでは一時的にデータベースを利用するので、データベースの情報を指定する必要があります。

mysqldiff  --host=localhost --user=ken --password=ppp db_production db_devel 

 するとdb_productionをdb_develにあわせるためのコマンドが出力されます。

## mysqldiff 0.43
##
## Run on Sun Nov 27 15:57:54 2011
## Options: user=root, debug=0
##
## --- file: db_production
## +++ file: db_devel

CREATE TABLE book (
  id int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

 db_productionとdb_develの順番を間違えると、逆のコマンドが生成されますので、注意してください。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証