XAMPPとMacPortsのPerlを利用する場合のMySQL接続について

公開

XAMPP for Mac OS Xを導入したのですが足りないPerlモジュールが多数あったため、先人の皆さんのブログを参考にし、MacPortsを利用してPerl環境を整えそちらのPerlを利用するようにしました(sudo ln -s /opt/local/bin/perl /usr/bin/perlでシンボリックリンクを設定しました)。

しかしながら、この環境でMovable Typeをはじめ、Perlを利用したプログラムでMySQL接続が発生した際、下記のようなmysqld.sockが見つからないというエラーが発生します。
Connection error: Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock'

この問題を解決するには、次の通りソケットファイルを指定します。これにより、PerlからXAMPPのMySQLに上手く接続ができるようになります。

Movable Typeの場合
DBSocket /Applications/xampp/xamppfiles/var/mysql/mysql.sock
Perlのデータソースで指定する場合
DBI:mysql:mfp2:localhost;mysql_socket=/Applications/xampp/xamppfiles/var/mysql/mysql.sock

ただ、毎回この設定を書くのは手間がかかるし、どうしても忘れがちになって考え込んでしまいます(Apacheのエラーログを見ればすぐ分かるけど)。そこでXAMPPのソケットファイルにシンボリックリンクを張ってやると簡単に解決するのではないかと考え試したところ、とりあえず上手くいきました。
sudo ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /opt/local/var/run/mysql5/mysqld.sock

#こうするのであれば、XAMPPよりMAMPを使った方が良かったのかなと思ったり...。