Подключение к другому компьютеру, ошибка «Не удается подключиться через сокет» - PullRequest
3 голосов
/ 03 сентября 2010

Я пытаюсь подключиться к другой машине:

$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] Не удается подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock' (2)

Удивительно, но с localhost на моем dev-сервере это работало нормально - наша производственная установка - это 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, на котором размещена база данных dev, PDO работает без сбоев.

1 Ответ

1 голос
/ 03 сентября 2010

Это очень просто. Ваш DSN имеет недостатки.

Используйте это:

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

Попробуйте и доложите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...