Я пишу библиотеку инфраструктуры для наших серверов mysql. Одним из сценариев, которые мне приходится обрабатывать, является временное отключение от сервера mysql.Стратегия управления для (ER_QUERY_INTERRUPTED) на mysql
Сценарий тестирования начинается с 100000 вставок в БД, а затем останавливает db и возвращает его обратно.
Во время этого сценария я уверенно получаю ошибку ER_QUERY_INTERRUPTED в запросах, запущенных во время остановки. Возникает вопрос:
Могу ли я считать, что-то о состоянии БД (как запрос не запущен) или рассматривают это как неопределенному behaiviour и упасть эту проблему вниз по цепочке к пользователю?
Пока вы делаете все это внутри транзакции, вы можете спокойно повторить запрос. Отключение во время транзакции приведет к автоматическому откату на SQL-сервере. Если вы находитесь за пределами транзакции, запрос _may has_ совершил, или _may not have_. Вставка снова может привести к дублированию данных. –
@ColinMorelli: Если вы используете механизм транзакционного хранилища, такой как 'InnoDB', тогда все операции« внутри транзакции »(хотя они могут автокомментировать). – eggyal
@eggyal Что я имел в виду, это неавтоматическая транзакция. Если вы не _explicitly_ отправляете 'COMMIT', вы не можете быть уверены, был ли запрос выполнен или нет во время отключения. –