MySQL

Материал из Artem Aleksashkin's Wiki
Перейти к навигации Перейти к поиску

Установка

Базовые команды

Выгрузка и загрузка дампа

Уровни изоляции транзакций

  • READ UNCOMMITTED
    • После INSERT данные сразу-же станут доступны для чтения.
  • READ COMMTITED
    • В данном случае прочитать данные возможно только после вызова COMMIT. При чем внутри транзакции данные тоже будут еще не доступны.
  • REPEATABLE READ
    • Здесь может возникнуть теоретическая проблема «фантомного чтения». Когда внутри одной транзакции происходит чтение данных, другая транзакция в этот момент вставляет новые данные, а первая транзакция снова читает те-же самые данные.
  • SERIALIZABLE
    • На данном уровне MySQL блокирует каждую строку над которой происходит какое либо действие, это исключает появление проблемы «фантомов».

MySQL server has gone away

Разберемся раз и навсегда.

Эта секция покрывает также ошибку Lost connection to server during query error.

Самая частая причина для ошибки MySQL server has gone away это то что сервер закрыл соединение по таймауту. В этом случае вы обычно получите одну из следующих ошибок(в зависимости от вашей ОС):

  • CR_SERVER_GONE_ERROR - Клиент не смог отправить запрос
  • CR_SERVER_LOST - Клиент не получил ошибку во время записи на сервере, но и при этом не получил ответ(или полный ответ) на запрос.

По умолчанию сервер закрывает соединение после 8ми часов если ничего не происходит. Вы можете поменять это ограничение в переменной wait_timeout, когда запускаете mysqld. См. секцию "Server System Variables" в документации.

Если у вас есть скрипт, вы должны сделать автоматическое переподключение и запустить запрос снова. Это предполагает, что со стороны клиента переподключение включено(оно включено для консольного клиента mysql).