【问题标题】:How do I tell DBD::mysql where mysql.sock is?我如何告诉 DBD::mysql mysql.sock 在哪里?
【发布时间】:2009-12-24 11:12:55
【问题描述】:

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

【问题讨论】:

    标签: mysql perl dbi


    【解决方案1】:

    可以在connect方法中指定socket的位置

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

    有关更多信息,请查看文档here

    【讨论】:

      【解决方案2】:
      $dbh=DBI->connect("DBI:mysql:database=dbname;mysql_socket=/var/lib/mysql/mysql.sock;user=username;password=password");
      

      您无需指定主机,因为您正在连接到套接字文件。

      【讨论】:

        猜你喜欢
        • 2017-01-11
        • 1970-01-01
        • 2011-03-23
        • 2011-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-08
        相关资源
        最近更新 更多