При каких обстоятельствах был бы Вы хотеть, чтобы направляющие были установлены НЕ снова соединиться с MySQL

Для прибавления к какой сказанный Wayne запишите Ваш WHERE перед именем таблицы в DELETE или UPDATE оператор.

13
задан 2 revs, 2 users 100% 10 October 2009 в 01:37
поделиться

2 ответа

Как вы указали в вопросе, один Возможный побочный эффект автоматического переподключения (если он выполняется на уровне каждого оператора) состоит в том, что оно не является безопасным для транзакций.

В документации MySQL фактически явно указано, что функция автоматического переподключения влияет на транзакции:

Все активные транзакции откатываются, и режим автоматической фиксации reset.

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

Также, если соединение с базой данных внезапно потеряно , сервер может неправильно снять блокировки, удерживаемые соединением, поэтому в некоторых случаях это звучит так, как будто приложение могло заблокироваться:

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

13
ответ дан 1 December 2019 в 23:15
поделиться

Из примечания к выпуску Rails 2.3 (выделено мной):

4.8. Повторное подключение MySQL

MySQL поддерживает флаг повторного подключения в своих подключениях - если он установлен в значение true, то клиент попытается повторно подключиться к серверу, прежде чем отказаться от него в случае потери подключения. Теперь вы можете установить reconnect = true для ваших MySQL-подключений в database.yml, чтобы получить такое поведение от приложения Rails. По умолчанию установлено значение false, , поэтому поведение существующих приложений не меняется.

6
ответ дан 1 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: