При работе с базами данных могут встречаться ошибки. Ниже перечислены частые ошибки и меры по их диагностике и устранению.
Недоступность базы данныхНеобходимо подключиться к серверу по SSH и выполнить следующие проверки: 1. Проверить, запущена ли служба MySQL: service mysql status
Пример вывода для запущенной службы: Если в выводе отсутствует слово running, служба не запущена. В этом случае необходимо попытаться ее запустить: service mysql start
После этого надо проверить работу сайта и сделать следующую проверку, если ошибка сохраняется. 2. Проверить состояние дискового пространства. Просмотреть общий и занятый объем на диске командой: df -h
Доступное пространство должно быть на основном разделе. Если свободное пространство закончилось, необходимо освободить место или перейти на тариф выше. Для работы с дисковым пространством можно использовать утилиты ncdu или du. Если на диске достаточно свободного места, но ошибка сохраняется, надо проверить состояние inodes. Если не удается решить ошибку самостоятельно, то нужно обратиться в техническую поддержку. Повреждены таблицы БД (Table is marked as crashed)При возникновении ошибок вида "Warning: Table ... is marked as crashed" необходимо выполнить восстановление таблиц. Если на сервере установлен phpMyAdmin, можно выполнить восстановление с его помощью. Для этого необходимо:
Без phpMyAdmin можно выполнить необходимые действия при подключении по SSH. Для восстановления одной таблицы нужно выполнить команду: mysqlcheck -r имя_базы имя_таблицы -uroot -p
Для восстановления всех таблиц в базе используется команда: mysqlcheck -r имя_базы -uroot -p
Также можно выполнить проверку всех таблиц в базе с помощью команды: mysqlcheck -r -A -uroot -p
Ошибка 2006: MySQL server has gone awayОшибка MySQL server has gone away означает, что сервер закрыл соединение. Это происходит, как правило, в двух случаях: превышение таймаута ожидания или получение сервером слишком большого пакета. В обоих случаях для устранения ошибки потребуется внести правки в конфигурационный файл MySQL. Это делается при подключении к серверу по SSH или с помощью веб-консоли в панели управления. Конфигурационный файл может располагаться по различным путям, например: /etc/my.cnf
/etc/mysql/my.cnf /etc/mysql/mysql.conf.d/mysqld.cnf Чтобы определить, в какой файл необходимо вносить изменения, можно использовать команду вида: grep -Rl 'имя_параметра' /etc/*
Например: или: С ее помощью можно выяснить, в каких файлах прописан нужный параметр, и изменить в них его значение. Таймаут Чтобы увеличить таймаут ожидания, необходимо скорректировать значение параметра wait_timeout Нужно открыть конфигурационный файл с помощью редактора, обязательно указав корректный путь к файлу: nano /etc/mysql/my.cnf
Далее нужно изменить значение параметра wait_timeout на более высокое. Значение указывается в секундах: чтобы увеличить время ожидания до 10 минут, необходимо указать значение 600: wait_timeout = 600
После перезапустить службу MySQL: service mysql restart
Размер пакетов Скорректировать максимально допустимый размер пакетов можно увеличением параметра max_allowed_packet. Нужно открыть конфигурационный файл с помощью редактора, обязательно указав корректный путь к файлу: nano /etc/mysql/my.cnf
Дале нужно изменить значение параметра max_allowed_packet на более высокое (значение указывается в мегабайтах): max_allowed_packet = 64M
После перезапустить службу MySQL: service mysql restart
Ошибка 1040: Too many connectionsОшибка "Too many connections" означает, что исчерпан лимит подключений к базе данных. Ошибка связана с медленными запросами, которые выполняются слишком долго (в этом случае требуется оптимизация кода) либо в числе одновременных подключений. В этом случае можно попробовать решить проблему увеличением лимита подключений (параметр max_connections) в конфигурационном файле MySQL. В пункте выше было описано, как определить расположение файла my.cnf. Следует открыть конфигурационный файл с помощью редактора, обязательно указав корректный путь к файлу: nano /etc/mysql/my.cnf
И заменить значение параметра на более высокое, например: max_connections = 200 После перезапустить службу MySQL: service mysql restart
Ошибка 1292: Incorrect date valueПри попытке добавить данные в таблицу MySQL без указания даты может выдаваться ошибка: ERROR 1292 (22007): Incorrect date value: '0000-00-00' for column 'columnname' at row 1
Из-за этой ошибки может нарушаться работа импорта в 1С. Для исправления ошибки необходимо: 1.Открыть файл /etc/mysql/my.cnf: nano /etc/mysql/my.cnf
2. В строке, начинающейся с sql-mode=, удалить следующие значения: NO_ZERO_IN_DATE NO_ZERO_DATE STRICT_ALL_TABLES 3. Выполнить перезагрузку mysql-сервера: sudo service mysql restart
Примечание: Если строка вида sql-mode= отсутствует, необходимо: 1. В файл /etc/mysql/my.cnf после параметра [mysqld] добавить строку: sql-mode="ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
2. Выполнить перезагрузку mysql-сервера: sudo service mysql restart
|