読者です 読者をやめる 読者になる 読者になる

tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【perl】DBI::mysqlでmysqlに接続すると`DBI connect('dbname=hoge;host=localhost;port=3306','hoge',...) failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)`と表示されるやーつの対応

はじめに

perlbrew x cpanm x あとはいろいろな構成でアプリを作っていたのですが、 DBD::mysqlperl->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の注意点

おわり

いずれにしても初歩的なことでも思ったよりは時間を使ってしまったのでメモ。