【问题标题】:Connecting to different machine, 'Can't connect through socket' Error连接到不同的机器,“无法通过套接字连接”错误
【发布时间】:2011-04-07 15:12:48
【问题描述】:

我正在尝试连接到另一台机器:

$this->_connection = new PDO("mysql: host=MYSQL_SERVER; dbname=MYSQL_DATABASE",MYSQL_USER, MYSQL_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

但是 PDO 倒闭:

SQLSTATE[HY000] [2002] 无法通过socket '/var/lib/mysql/mysql.sock' 连接到本地MySQL服务器(2)

令人生气的是,这在我的开发服务器上的 localhost 上运行良好 - 我们的生产设置是一个带有单独数据库服务器的 LVS,但我似乎无法让 PDO 连接到它!

我在哪里,哦,我在哪里搞砸了什么?

编辑:

这行得通:

mysql_connect(MYSQL_SERVER, MYSQL_USER, MYSQL_PASSWORD) or die(mysql_error());
mysql_select_db(MYSQL_DATABASE) or die(mysql_error());;
echo 'Connected to database <br/>';

注意:MYSQL_SERVER 不是 localhost,它是我们数据库主服务器的 IP。在托管开发数据库的开发服务器上,PDO 可以完美运行。

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

    这很简单。你的 DSN 有缺陷。

    使用这个:

    $this->_connection = new PDO("mysql:host=EXTERNAL_IP;dbname=DB", USERNAME, PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    

    尝试并报告。

    【讨论】:

    • 如果我很密集,请原谅我,但我看不出这与我在问题中发布的内容有何不同
    • 我相信 ; 后面的空格很重要。
    • 哇。非常感谢 - 在过去的 48 年里,我睡了大约 2 个小时,你不知道我多么欣赏这样一个简单的解决方案。 :) :D
    猜你喜欢
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2016-11-22
    • 1970-01-01
    • 2012-07-24
    • 2022-11-24
    • 1970-01-01
    相关资源
    最近更新 更多