Spec-Zone.ru › MySQL Connectors 1.0

3.6.8 Управление автоматическим подключением

Библиотека клиента MySQL может выполнить автоматическое повторное подключение к серверу, если при попытке отправить оператор на сервер для выполнения обнаруживается, что соединение прервано. Если автоматическое повторное подключение включено, библиотека пытается один раз повторно подключиться к серверу и отправить оператор снова.

Примечание

Начиная с MySQL 8.0.34, функция автоматического повторного подключения устарела. Соответствующий MYSQL_OPT_RECONNECT параметр по-прежнему доступен, но теперь выводит предупреждение об устаревании в стандартный вывод об ошибках, если ваше приложение вызывает функцию mysql_get_option() или mysql_options() с этим параметром, даже при установке его в значение false.

Ожидайте, что функция автоматического повторного подключения будет удалена в будущих версиях MySQL.

Автоматическое повторное подключение по умолчанию отключено.

Если соединение прервано, действие mysql_ping() зависит от состояния автоматического повторного подключения. Если автоматическое повторное подключение включено, mysql_ping() выполняет повторное подключение. В противном случае возвращается ошибка.

Некоторые клиентские программы могут предоставлять возможность управления автоматическим повторным подключением. Например, mysql по умолчанию повторно подключается, но параметр может быть использован для подавления этого поведения.

Если происходит автоматическое повторное подключение (например, в результате вызова mysql_ping()), явного подтверждения об этом нет. Чтобы проверить повторное подключение, вызовите mysql_thread_id() для получения исходного идентификатора соединения перед вызовом mysql_ping(), а затем снова вызовите mysql_thread_id(), чтобы увидеть, изменился ли идентификатор.

Автоматическое повторное подключение удобно, так как вам не нужно реализовывать свой собственный код повторного подключения, но если произойдет повторное подключение, несколько аспектов состояния соединения на стороне сервера сбросятся, и ваше приложение не будет об этом уведомлено.

Повторное подключение влияет на состояние, связанное с подключением, следующим образом:

  • Откатывает все активные транзакции и сбрасывает режим автосброса.

  • Освобождает все блокировки таблиц.

  • Закрывает (и удаляет) все TEMPORARY таблицы.

  • Переинициализирует системные переменные сеанса до значений соответствующих глобальных системных переменных, включая системные переменные, которые неявно устанавливаются операторами, например.

  • Потеряет настройки переменных, определённых пользователем.

  • Освобождает подготовленные операторы.

  • Закрывает переменные.

  • Сбрасывает значение переменной до 0.

  • Освобождает блокировки, полученные с помощью .

  • Потеряет связь клиента с записью таблицы Performance Schema, которая определяет инструменты мониторинга потока подключения. Если клиент повторно подключается после разрыва соединения, сеанс связывается с новой записью в таблице , и состояние мониторинга потока может отличаться. См. .

Если происходит повторное подключение, любой SQL-оператор, указанный при вызове mysql_options() с параметром MYSQL_INIT_COMMAND, будет повторно выполнен.

Если соединение прервано, возможно, сеанс, связанный с подключением на стороне сервера, все еще работает, если сервер еще не обнаружил, что клиент больше не подключен. В этом случае все блокировки, удерживаемые исходным подключением, все еще принадлежат этому сеансу, поэтому вы можете убить его, вызвав mysql_kill().

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/c-api-8.0-en/c-api-auto-reconnect.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API