我正在尝试连接到另一台机器:
$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数据库。
答案 0 :(得分:1)
这很简单。您的DSN存在缺陷。
使用此:
$this->_connection = new PDO("mysql:host=EXTERNAL_IP;dbname=DB", USERNAME, PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
尝试并报告。