Избегайте вызовов базы данных, используя неправильное подключение к базе данных
Я работаю над некоторым большим программным обеспечением, у которого открыто текущее соединение с базой данных, которое соединяется с одной базой данных, но, к сожалению, оно не использует идентификатор ссылки в своих вызовах запросов.
Теперь мне пришлось открыть соединение с другой базой данных; это работает нормально, однако теперь все вызовы функций базы данных, похоже, используют второе открытое мной соединение (они используют разные аргументы).
Есть ли способ избежать этого и заставить запросы вернуться к использованию первого открытого соединения, или мне придется добавить link identifier
на все остальные звонки?
Могу ли я просто закрыть второе соединение, и тогда оно вернется к использованию или нет?
Я знаю, что могу избежать открытия второго соединения, используя список db в запросе, но я не хочу, чтобы обе базы данных использовали одинаковые учетные данные.
1 ответ
Нашел этот кусок из php документации.
Обратите внимание, что руководство немного вводит в заблуждение:
"Устанавливает текущую активную базу данных на сервере, который связан с указанным идентификатором ссылки. Каждый последующий вызов mysql_query() будет выполняться в активной базе данных".
2-е утверждение не верно или в лучшем случае неясно.
Введенная вручную запись mysql_query() фактически утверждает, что она будет использовать последнюю ссылку, открытую mysql_connect() по умолчанию.
Таким образом, если у вас есть 2 соединения, вам нужно будет указать соединение при вызове mysql_query или повторно выполнить соединение, чтобы убедиться, что 1-я база данных станет стандартной, просто использование mysql_select_db не сделает 1-ю базу данных по умолчанию для последующих вызовов mysql_query.
Вероятно, это очевидно только тогда, когда две базы данных находятся на разных серверах.
http://www.php.net/manual/en/function.mysql-select-db.php
Похоже, мне придется запустить другое соединение с первой базой данных, когда я закончу со второй.