3.6.8 Управление автоматическим подключением
Библиотека клиента MySQL может выполнять автоматическое повторное подключение к серверу, если обнаружит, что подключение прервано, когда вы пытаетесь отправить оператор на сервер для выполнения. Если автоматическое повторное подключение включено, библиотека пытается один раз повторно подключиться к серверу и отправить оператор снова.
Функция автоматического повторного подключения устарела. Соответствующий 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.