Попытка подключения MySQL работает нормально в 5.2.9, но не в 5.3.0 - Помощь? - PullRequest
0 голосов
/ 12 мая 2010

У меня проблемы с созданием вторичного соединения MySQL (с отдельной внешней БД) в моем коде. Он отлично работает в PHP 5.2.9, но не может подключиться в PHP 5.3.0. Мне известны (по крайней мере, некоторые) изменения, необходимые для создания успешных подключений MySQL в более новой версии PHP, и раньше они были успешными, поэтому я не уверен, почему это не работает на этот раз.

У меня уже есть соединение БД, открытое к локальной базе данных. Затем эта функция используется для дополнительного подключения к отдельному удаленному каталогу. Включенный файл конфигурации просто содержит сведения о внешней базе данных (хост, пользователь, пароль и имя). Я проверил, и он включен правильно.

function connectDP() {
    global $dpConnection;

    include("secondary_db_config.php);
    $dpConnection = mysql_connect($dp_dbHost, $dp_dbUser, $dp_dbPass, true) or DIE("ERROR: Unable to connect to Deployment Platform");
    mysql_select_db($dp_dbName, $dpConnection) or DIE("ERROR 006: Unable to select Deployment Platform Database");
}

Затем я пытаюсь установить это новое соединение, просто вызывая эту функцию извне:

connectDP();

Но при загрузке страницы (в 5.3.0) я получаю сообщение:

ERROR: Unable to connect to Deployment Platform

Я использую необязательный логический флаг new_link в качестве четвертого аргумента в функции mysql_connect(), и он все еще не работает.

Этим утром я ломал голову, пытаясь выяснить, почему это соединение не работает (хотя в другом месте я сделал нечто очень похожее на отдельную вторую базу данных, которая работает). Любая помощь будет оценена.

Спасибо!

Рич

1 Ответ

0 голосов
/ 12 мая 2010

Начиная с PHP 5.3 он использует собственный драйвер MySQL (mysqlnd) по умолчанию вместо libmysqlclient. В зависимости от платформы он не может прочитать значения по умолчанию из файла конфигурации вашего MySQL (например, /etc/mysql/my.cnf). Вам необходимо отредактировать php.ini и указать значения по умолчанию для используемых расширений (mysql, mysqli, pdo). Например, в Debian вам нужно указать путь к сокету (например, /var/run/mysqld/mysqld.sock) самостоятельно в файле INI. Просто просмотрите INI-файл и укажите недостающие опции, и он должен работать.

...