连接到不同的机器,'无法通过插座连接'错误

时间:2010-09-03 00:44:00

标签: php mysql pdo

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

$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 barfs:

  

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。在我们的dev服务器上,PDO可以完美地运行dev数据库。

1 个答案:

答案 0 :(得分:1)

这很简单。您的DSN存在缺陷。

使用此:

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

尝试并报告。