Spec-Zone.ru › MySQL Connectors 1.0

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

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

Примечание

Начиная с MySQL 8.0.34/8.1.0, функция автоматического переподключения устарела. Соответствующий MYSQL_OPT_RECONNECT параметр всё ещё доступен и функционален в MySQL 5.7, но с MySQL 8.0.34/8.1.0 будет возвращать предупреждение об устаревании в стандартный вывод ошибок, если ваше приложение вызывает функцию 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-5.7-en/c-api-auto-reconnect.html

Spec-Zone.ru

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