DBD::mysqlのDBI->connect()で少し嵌る
環境
ubuntu
lampp
perl
DBI
DBD::mysql
failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at insert.pl line 11
というようなエラーが発生して軽くつまった。
多くの人が
「DBIでCan't connect to local MySQL server through socket '/tmp/mysql.sock'」
http://diary.lampetty.net/20060926.html
にて解決してるが、自分はダメだった。
my.cnfを書き直しても、
perlの出力するエラーは依然として
failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at insert.pl line 11
のままで、「mysqld.sock」のパスが変わってない。
http://forums.mysql.com/read.php?51,52107,52111#msg-52111
にて解決した。
sockの指定の仕方が「port=」ではなく「mysql_socket」に変わっているらしい。バージョンのせいかもしれない。
結局
$db = DBI->connect('DBI:mysql:ex1:localhost;mysql_socket=/opt/lampp/var/mysql/mysql.sock', $user, $passwd,{RaiseError=>0,PrintError=>1,AutoCommit=>1});
でうまくいった。