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

bko*_*och 8 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
Run Code Online (Sandbox Code Playgroud)

是的MySQL启动并运行.问题是mysql.sock不在/ tmp中.
我知道mysql.sock的位置,我目前已经被黑了以便它可以工作,我创建了一个到mysql.sock文件当前位置的软链接.我宁愿不改变MySQL配置,尽管这可能是最简单的事情.

有没有办法进入DBD :: mysql并配置它在正确的位置寻找mysql.sock?

Ana*_*hah 14

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

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

有关详细信息,请查看此处的文档