SummerWind

Web, Photography, Space Development

DBD::mysqlとLeopard

最近はよくPerlを使ってコードをゴリゴリと書くことが多いので、手元のLeopardマシンには、ActivePerlMAMPを入れて、Perlが動かせる環境が構築してあります。そんなわけで、今日もPerlを使ってコードを書いていたら、入っているActivePerlのバージョンが1つ前の5.8系だったのが気になったので、最新の5.10系に更新することに。

更新作業は単純で、まず5.8系の環境を全て削除し、5.10系をセットアップ後に必要なモジュール類を全て入れ直せば再構築完了。動作確認がてら、ちょうど書いていたDBIx-Classを使ったコードを実行すると、どうもMySQLへの接続でコケる様子。5.8系の環境では問題なく動作していたので、エラーメッセージをひろってみたところ、以下のエラーが。

DBI Connection failed: install_driver(mysql) failed .....

どうやらDBD::mysql.pmがなくて接続できないよということらしいので、CPAN経由でインストールを試みる。

$ sudo cpan -i DBD::mysql
.....
.....
Can't exec "mysql_config": No such file or directory .....

mysql_configが見つからなくてエラーで止まるので、仕方なくDBD-mysqlのページから最新版の4.010をダウンロードしてきて、手動でmakeすることに。今回はLeopardに入ってる標準のMySQLではなくて、MAMPに入っているMySQLを使いたいので、make時に以下のようにMAMPのmysql_configを引数で指定しました。

$ perl Makefile.PL \
  --testuser=root \
  --testpassword=root \
  --mysql_config=/Applications/MAMP/Library/bin/mysql_config
$ make
$ make test
$ sudo make install

これで無事にPerlからMySQLに接続することができるようになりました。しかし今まで手動でDBD::mysqlを入れた記憶がないので、ActivePerl 5.8系を使っていた頃に、何もしなくても動いていたのが激しく謎です。うーん。

Moto Ishizawa

Moto Ishizawa
ソフトウェアエンジニア。ロケットの打上げを見学するために、たびたびフロリダや種子島にでかけるなど、宇宙開発分野のファンでもある。