MySQL: различия между версиями
Перейти к навигации
Перейти к поиску
Artem (обсуждение | вклад) |
Artem (обсуждение | вклад) |
||
Строка 32: | Строка 32: | ||
По умолчанию сервер закрывает соединение после 8ми часов если ничего не происходит. Вы можете поменять это ограничение в переменной wait_timeout, когда запускаете mysqld. См. секцию "Server System Variables" в документации. | По умолчанию сервер закрывает соединение после 8ми часов если ничего не происходит. Вы можете поменять это ограничение в переменной wait_timeout, когда запускаете mysqld. См. секцию "Server System Variables" в документации. | ||
Если у вас есть скрипт, вы должны | Если у вас есть скрипт, вы должны сделать автоматическое переподключение и запустить запрос снова. Это предполагает, что со стороны клиента переподключение включено(оно включено для консольного клиента mysql). | ||
Версия от 15:02, 25 ноября 2019
Установка
Базовые команды
Выгрузка и загрузка дампа
Уровни изоляции транзакций
- 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).