11

DBD::mysql を DBI で使用すると、データベースに接続しようとすると次のエラーが発生します。

DBI connect('database=mydb:host=localhost','someuser',...) failed: Can't connect 
   to local MySQL server through socket '/tmp/mysql.sock' (2) at ./myscript.pl line 97

はい、MySQL は稼働しています。問題は、mysql.sock が /tmp にないことです。
私は mysql.sock の場所を知っており、現在動作するようにハッキングしています。mysql.sock ファイルの現在の場所へのソフト リンクを作成しました。MySQL の構成は変更したくありませんが、これがおそらく最も簡単な方法です。

DBD::mysql に入り、正しい場所で mysql.sock を探すように設定する方法はありますか?

4

2 に答える 2

15

connectメソッドでソケットの場所を指定できます

my $dbh = DBI->connect("DBI:mysql:database=dbname;host=localhost;mysql_socket=/path/to/mysql.sock","someuser","somepassword", {'RaiseError' => 1});

詳細については、こちらのドキュメントをご覧ください

于 2009-12-24T11:24:22.847 に答える
4
$dbh=DBI->connect("DBI:mysql:database=dbname;mysql_socket=/var/lib/mysql/mysql.sock;user=username;password=password");

ソケットファイルに接続しているので、ホストを指定する必要はありません。

于 2010-08-19T21:35:07.330 に答える