やったことだけ書く備忘録

MySQL::Diffをコンソールで動かすメモ

seezooのバージョンアップの際などに、DBがどれだけ変更されたかを抽出するのにPerlのMySQL::DIffをよく使っているのですが、環境を変えた時に動かし方を忘れてしまう(かつPerl詳しくない)ので備忘録として。
今回はMac OSX 10.7.3 Lion上で動かします。なお、MySQL自体はインストール済みの状態です。



ソースのダウンロード


最終更新が結構古いですが、SourceForgeからダウンロードします。本当はCPANとかでやればいいんだとは思いますが・・・。



インストール


アーカイブを入手したら解凍します。このパッケージにはコマンドライン用のモジュールも入っているので、今回はそっちを利用するのが目的です。インストール先は$HOME/local/mysqldiffにします。




tar xvfz latest.tar.gz
mv MySQL-Diff-0.4.3 $HOME/local/mysqldiff
 


bin/mysqldiffにリンクを貼って呼び出せるようにします。コマンドの実態はPerlスクリプトですね。




ln -s $HOME/local/mysql/bin/mysqldiff /usr/local/bin/mysqldiff
 


これでOKかなーと思って実行すると、




mysqldiff

Can
't locate MySQL/Diff.pm in @INC (...
 


エラーが出て動かず。どうやらパスが通ってないみたいなので、パスを追加。




vim $HOME
/local/mysql/bin/mysqldiff

+ use lib '$HOME/local/mysqldiff/lib';
 



先頭にuseしてパスを通した後、再度実行すると動きましたー。
あと、オプションは-uroot -pとか出できるよーって書いてあるんですが、なぜか自分の環境では、--user=root --password=xxx みたいなオプション指定出ないと動きませんでした。なんでだろう?

ともあれ、これでDBの差分が取れるようになったので助かりました^^
ちなみに、テーブルやカラム構造は差分を取りますが、インデックスなどは取ってくれないらしいので、そこは手動でやる必要があるみたいですね。




※2013/02/16追記
Twitterのコメントにあったので追記します。
Macだと上記の方法でOKなのですが、LinuxだとFile::Slurpも入れないと動かせないようです。なので、これはcpanから入れます。




sudo cpan
cpan 
install File::Slurp
 


これで動くようになりました!ありがとうございます。

« 前の記事 次の記事 »

2件のコメント

India さん

Stands back from the keyboard in amtnemeza! Thanks!

Joni さん

<a href="http://qoxklpppd.com">Susiprring</a> to think of something like that

コメントを投稿する

 画像に表示されている文字を入力してください。