はじめに
perlbrew x cpanm x あとはいろいろ
な構成でアプリを作っていたのですが、
DBD::mysql
でperl->mysql接続しようとするとこんなエラーが出ることがあります。
BI connect('dbname=hoge;host=localhost;port=3306','hoge',...) failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
そんなときの対処法
エラーが出るとき
# 各変数には適切な値が入ってる my $dbh = DBI->connect( "dbi:mysql:dbname=$DB_NAME;host=$DB_HOST;port=$DB_PORT;", "$DB_USER","$DB_PASS", { RaiseError => 1, PrintError => 1, AutoCommit => 1, Warn => 1 } ) or die "$!\n Error: failed to connect to DB.\n";
上記のエラーなくすとき
# 各変数には適切な値が入ってる my $dbh = DBI->connect( "dbi:mysql:dbname=$DB_NAME;host=$DB_HOST;port=$DB_PORT;mysql_socket=/tmp/mysql.sock", "$DB_USER","$DB_PASS", { RaiseError => 1, PrintError => 1, AutoCommit => 1, Warn => 1 } ) or die "$!\n Error: failed to connect to DB.\n";
そうです。mysql_socket=/tmp/mysql.sock
を追加するだけっていうまんまな記事です。
mysqlのsocketを変更した際によくなりがちですね。。。orz
DBI::mysqlは指定しないと/var/lib/mysql/mysql.sock
を見てるようですが
どこからひっぱってきてるんですかね。。。
めんどくさいから調べてませんがmysql_config
コマンドからとかでしょうか??
→ 【mysql】mysql.sockの場所の確認とmysql_configの注意点
おわり
いずれにしても初歩的なことでも思ったよりは時間を使ってしまったのでメモ。