НЕДОСТУПНА БАЗА ДАННЫХ
1. Проверьте MySQL
- подключитесь к серверу по SSH и выполните:
service mysql status
- в выводе должно присутствовать running, если нет – запустите службу:
service mysql start
- после запуска MySQL проверьте работу сайта. Если он не работает – переходите к следующему шагу.
2. Проверьте дисковое пространство
- проверьте наличие свободного места:
df -h
- если на диске недостаточно свободного места – Вы можете расширить диск или удалить ненужные файлы. Для подробного анализа состояния дискового пространства и удаления файлов лучше использовать специальные утилиты du, ncdu.
- если на диске есть свободное пространство, но приложения выдают ошибку о нехватке места – проверьте inodes.
ВОССТАНОВИТЕ ТАБЛИЦ БД
Если при работе сайта выводятся ошибки Warning: Table './database/table' is marked as crashed – выполните восстановление поврежденных таблиц.
- Если на вашем сервере установлен phpMyAdmin – зайдите в его интерфейс и выберите нужную базу данных. Выделите таблицы, о повреждении которых сообщалось в ошибках. В меню С отмеченными выберите Восстановить.
- Также можно выполнить восстановление таблиц через консоль.
Подключитесь к серверу по SSH. Чтобы восстановить определенную таблицу table_name в базе base_name выполните:
mysqlcheck -r base_name table_name -uroot –p
Чтобы восстановить все таблицы в базе данных base_name выполните:
mysqlcheck -r base_name -uroot -p
Чтобы проверить все таблицы в базе выполните:
mysqlcheck -r -A -uroot -p
MYSQL SERVER HAS GONE AWAY (ОШИБКА 2006)
Данная ошибка говорит о том, что сервер закрыл соединение. Это может быть вызвано превышением времени ожидания или получением слишком большого пакета.
Для устранения ошибки подключитесь к серверу по SSH. Файл конфигурации может располагаться в различных директориях, например:
/etc/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
/etc/mysql/my.cnf
Для поиска файла с нужными настройками используйте следующую команду:
grep -Rl 'name' /etc/*
Команда для поиска файла с настройками допустимого размера получаемых пакетов:
grep -Rl 'max_allowed_packet' /etc/*
Команда для поиска файла с настройками таймаута:
grep -Rl 'wait_timeout' /etc/*
1. Увеличение таймаута
Откройте файл конфигурации, используя редактор. Путь к файлу был найден в предыдущем пункте.
nano /etc/mysql/mysql.conf.d/mysqld.cnf
Увеличьте wait_timeout на нужную величину. Таймаут в файле конфигурации указывается в секундах. Чтобы задать таймаут 5 минут – укажите значение 300:
wait_timeout = 300
Чтобы изменения вступили в силу – перезапустите MySQL:
service mysql restart
2. Увеличение допустимого размера пакетов
Измените параметр max_allowed_packet. Откройте файл конфигурации, используя редактор. Обязательно указывайте правильный путь.
nano /etc/mysql/mysql.conf.d/mysqld.cnf
Увеличьте max_allowed_packet на нужную величину. Максимально допустимый размер пакетов указывается в мегабайтах. Чтобы задать максимальный размер пакета 128 мегабайт введите:
max_allowed_packet = 128M
Чтобы изменения вступили в силу – перезапустите MySQL:
service mysql restart
TOO MANY CONNECTIONS (ОШИБКА 1040)
Данная ошибка говорит о том, что достигнуто предельное количество подключений к БД. Причины появления ошибки:
1. Медленные запросы, на которые уходит много времени. Решить данную проблему может только оптимизация кода базы данных.
2. Большое количество одновременных подключений. Данную проблему можно решить путем изменения параметра максимального количества подключений в файле конфигурации MySQL.
Найдите путь к файлу, содержащему параметр max_connections:
grep -Rl 'max_connections' /etc/*
Откройте найденный файл и увеличьте в нем максимальное количество одновременных подключений (например, до 150):
max_connections = 150
Чтобы изменения вступили в силу – перезапустите MySQL:
service mysql restart
INCORRECT DATE VALUE (ОШИБКА 1292)
Данная ошибка может возникать при добавлении в таблицу MySQL без указания даты.
1. Для устранения ошибки откройте файл конфигурации. Например:
nano /etc/mysql/mysql.conf.d/mysqld.cnf
2. В строке sql-mode=, удалите:
NO_ZERO_IN_DATE
NO_ZERO_DATE
STRICT_ALL_TABLES
3. Если в файле конфигурации отсутствует строка sql-mode=, добавьте следующую строку:
sql-mode="ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
4. Чтобы изменения вступили в силу – перезапустите MySQL:
service mysql restart
Если у Вас остались вопросы - создайте тикет в техподдержку.