我怎么告诉DBD :: mysql mysql.sock在哪里?

时间:2009-12-24 11:12:55

标签: mysql perl dbi

将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?

2 个答案:

答案 0 :(得分:14)

您可以在connect方法中指定套接字的位置

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

有关详细信息,请查看文档here

答案 1 :(得分:3)

$dbh=DBI->connect("DBI:mysql:database=dbname;mysql_socket=/var/lib/mysql/mysql.sock;user=username;password=password");

由于您正在连接套接字文件,因此无需指定主机。