DB操作用のGUIツールはいろいろありますね
最近のお仕事では開発環境のDBがSQLiteなので、DBの状態を見るのにFirefoxのSQLite Managerを使ってました。
昔はOracleにつなぐのにCSEを使ったり、EclipseのDBViewerを使ったり。
Emacsから操作できたら素敵だなーと常々思ってたんですが、ついにそのためのライブラリを見つけました。
DB操作ツール Emacs DBI を作ってみた
http://d.hatena.ne.jp/kiwanami/20120305/1330939440
こんなすばらしいツールを作ってくれるなんて感謝感謝です
早速試してみました
環境
Mac OSX Lionです。perlが必要ということですが、デフォルトで入ってます。
$ which perl /usr/bin/perl $ which cpan /usr/bin/cpan
導入
cpanm
perlは疎いのですがcpanmを使うと良いということですので、入れてみました。rubyでいうrvm、pythonでいうvirtulenvみたいなものなんですかね?
$ cd ~/bin $ curl -LOk http://xrl.us/cpanm $ chmod +x cpanm
.bash_profileに以下を設定
export PERL_CPANM_OPT="--local-lib=~/extlib" export PERL5LIB="$HOME/extlib/lib/perl5:$HOME/extlib/lib/perl5/i386-freebsd-64int:$PERL5LIB"
local::libを入れる
$ cpanm local::lib --> Working on local::lib Fetching http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz ... OK Configuring local-lib-1.008004 ... OK Building and testing local-lib-1.008004 ... OK Successfully installed local-lib-1.008004 1 distribution installed
upgrade
$ cpanm --self-upgrade --> Working on App::cpanminus Fetching http://search.cpan.org/CPAN/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.5007.tar.gz ... OK Configuring App-cpanminus-1.5007 ... OK Building and testing App-cpanminus-1.5007 ... OK Successfully installed App-cpanminus-1.5007 1 distribution installed
Emacs DBIに必要なモジュールを入れる。とりあえずSQLiteを使いたいんだけど、MySQLとPostgresも入れときました。
cpanm RPC::EPC::Service DBI DBD::SQLite DBD::Pg DBD::mysql
Emacsのライブラリを入れる
M-x list-packages
でedbiにiでマークつけてxでインストール
使ってみる
M-x edbi:open-db-viewerを実行し、表示されたバッファにDBの接続情報を入力してOKします。
SQLiteの場合はDataSourceに以下のような形式で入力します。
dbi:SQLite:dbname=/path/to/devdb.sqlite
DataSourceを入力してOKしたところ、以下のようなエラーが発生
Connection Error : (error Server may raise an error : Can't locate RPC/EPC/Service.pm in @INC (@INC contains: /Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.3 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12 .) at /Users/yuhei/.emacs.d/vendor/elpa/edbi-0.1.0/edbi-bridge.pl line 4. BEGIN failed--compilation aborted at /Users/yuhei/.emacs.d/vendor/elpa/edbi-0.1.0/edbi-bridge.pl line 4. Process epc:server:2 exited abnormally with code 2 )
環境変数PERL5LIBが設定されていなかったのが原因でした。
シェルからemacsを起動しているのに、シェル側で.bash_profileを読み直していなかった。
PERL5LIBを設定して再度起動してみたら、こんどは以下のようなエラー。
Connection Error : (error "Can't call method \"get_info\" on an undefined value at /Users/yuhei/.emacs.d/vendor/elpa/edbi-0.1.0/edbi-bridge.pl line 20. ")
今度は普通にdbファイルへのパスが間違ってました。
パスが間違っているとこういうエラーになります!
上記を修正してようやく起動しました