Ошибки баз данных MySQL: что значят и как их исправить

Ошибки баз данных MySQL: что значят и как их исправить

Сегодняшняя заметка будет касаться только достаточно «узкой» категории читателей блога — речь пойдет о базах данных MySQL (и ошибках, при работе с ними…).

Вообще, подобные базы данных используются многими движками сайтов (CMS), причем некоторые из них не блещут высокой безопасностью… Кроме этого, к базе MySQL возможен прямой доступ через веб-интерфейс. А если добавить к этому ошибки при копировании и переносе БД (что бывает очень часто), то, разумеется, всё это вкупе создает определенные риски для данных… ????

Собственно, ниже рассмотрим, что можно сделать, если появилась-таки ошибка, что база данных недоступна (или не может быть прочитана, или…). Заранее скажу, что подобные ошибки далеко не всегда означает полную утрату БД, во многих случаях удается сравнительно-легко восстановить работоспособность сайта (интернет-магазина, и пр.).

И так…

*

Несколько рекомендаций, если возникла ошибка с MySQL БД

???? Совет 1

Если вы накануне никак не взаимодействовали с БД (например, не переносили сайт с одного сервера на другой), и всё работало в штатном режиме — возможно, что ошибка недоступности к базе связана с возникшими проблемами на стороне хостинг-компании (⇒ запрос в поддержку…).

Кроме этого, обратите внимание на конфигурационные файлы CMS, отвечающие за доступ к базе данных. Возможно, что с самой БД всё в порядке, а вот путь (или пароль) для доступа к ней указан некорректно…

Например, в такой популярной CMS как WordPress, файлом для настройки доступа к БД явл. wp-config.php.

Ошибки баз данных MySQL: что значят и как их исправить

Параметры MySQL — эту информацию можно получить у хостинг-провайдера

*

???? Совет 2

Еще одна довольно очевидная рекомендация — проверить наличие бэкапа (резервной копии). Даже если вы самостоятельно не делали его — возможно его сделал хостинг-провайдер.

Кроме этого, как только возникла какая-то ошибка с БД — я бы порекомендовал в любом случае сделать ее копию (если это возможно). Вдруг диск начал «сыпаться», и в дальнейшем даже текущая БД исчезнет «на совсем»…

Ошибки баз данных MySQL: что значят и как их исправить

PHP My Admin — экспорт базы данных

*

???? Совет 3

Далее следует попробовать провести восстановление БД встроенными средствами MySQL…

Итак, что нужно сделать в случае, если БД MySQL перестала запускаться:

  1. Откройте файл my.cnf и установите следующий параметр: innodb_force_recovery = 1;
  2. Перезапустите MySQL следующей командой: /etc/init.d/mysql restart;
  3. Сделайте дамп БД и запакуйте его: mysqldump db | gzip > db.sql.gz;
  4. Создайте новую БД: mysql -e create database “new_DB»;
  5. Импортируйте туда данные: zcat database.sql.gz | mysql new_DB.

***

???? Примечание!

my.cnf — это файл конфигурации MySQL. Чтобы найти файл, используйте команду: locate my.cnf

  • В Linux’e обычно он находится по такому пути:
  • /etc/my.cnf
    # либо
  • /etc/mysql/my.cnf
  1. ***
  2. Перезапуск MySQL подобным образом не ведет к запуску всех связанных процессов и в некоторых случаях позволяет открыть старую БД.
  3. С помощью указанных команд мы пробуем создать дамп БД, затем импортировать его в новую базу, которую далее можно будет открыть обычным способом.

Если это получается, старую БД можно удалить. Кстати, если способ не помогает, и старая база не запускается, нужно пробовать другие значения параметра innodb_force_recovery, вплоть до 6.

Ошибки баз данных MySQL: что значят и как их исправить

MySQL

  • При нормальном запуске БД система пытается запустить все процессы, включая и те, которые были завершены аварийно (например, из-за проблем с электричеством).
  • Благодаря опции innodb_force_recovery можно отключить некоторые параметры, которые мешают штатному запуску БД.
  • Цифры означают следующее:
  1. Запуск MySQL не останавливается, даже если система в процессе запуска обнаруживает поврежденные страницы;
  2. Отмена запуска фоновых операций;
  3. Отмена попыток отката транзакций;
  4. Отказ от расчета статистики и использования сохраненных изменений;
  5. Не учитывает логи отката при запуске;
  6. Не учитывает параметры ib_logfiles во время запуска.

*

???? Совет 4 (альтернативный способ восстановления БД)

Описанный выше способ довольно эффективен, хотя, к сожалению, может оказаться сложным для некоторых пользователей. Но работа с любым форматом базы данных — это всегда непросто…

Если нет желания редактировать конфиги, открывать командную строку и изучать синтаксис нужных команд, то нужен достаточно простой и дружелюбный в использовании инструмент, например, такой как Recovery Toolbox for MySQL. (????)

Ошибки баз данных MySQL: что значят и как их исправить

Recovery Toolbox for MySQL — скриншот главного окна программы

Пожалуй, это самый простой и эффективный способ восстановления БД MySQL, именно то, что нужно большинству начинающих пользователей. ????

Вариантов, собственно, немного — разобраться со всем самому, потратив несколько дней, или в течение часа восстановить базу данных, продолжить работу и избежать убытков.

Стоит сразу отметить, что Recovery Toolbox for MySQL работает только с копией базы, поэтому никогда не испортит то, что осталось от старой БД. Почувствуйте разницу, копаясь в конфигах и настройках «боевого» сервера, и каждую минуту опасаясь сделать что-то неправильно, что приведет к полному уничтожению того, что еще осталось…

  1. *
  2. ???? Как восстановить базу с помощью Recovery Toolbox for MySQL:
  3. Для восстановления поврежденной БД MySQL при помощи этой программы нужно сделать следующее:
  1. Скачать Recovery Toolbox for MySQL с офиц. сайта: https://mysql.recoverytoolbox.com/ru/;
  2. Установить и запустить программу;
  3. Выбрать папку, в которой хранятся файлы поврежденной базы данных MySQL (предварительно создайте копию);
  4. Выбрать поврежденную базу данных из списка
  5. Запустить анализ выбранной БД;
  6. Просмотреть результаты восстановления: таблицы, объекты, индексы;
  7. Настроить способ сохранения восстановленных данных;
  8. Сохранить данные (доступно в полной версии). Пример на скриншоте ниже. ????

Ошибки баз данных MySQL: что значят и как их исправить

Пример восстановления БД

Программа загружается совершенно бесплатно и устанавливается без регистрации. С помощью Recovery Toolbox for MySQL можно бесплатно просматривать восстановленные данные, оценивать эффективность работы.

Можно даже подсмотреть какие-то изменения и легко внести их руками в «протухший», но еще пригодный к использованию бэкап. Заплатить предложат только в том случае, если потребуется сохранить восстановленные данные, пересоздать базу MySQL и подключить ее к системе.

Ошибки баз данных MySQL: что значят и как их исправить

База восстановлена — сохранить?

*

???? «Пару слов» о безопасности при работе с Recovery Toolbox for MySQL

Самое главное – программа всегда работает только с копией исходной базы, поэтому этот способ восстановления намного надежнее, чем вносить изменения в конфиги БД и смотреть, что из этого получится. Помните, попытка ремонта БД на «продакшн» сервере может окончательно добить ее, такое бывает даже у опытных админов…

Также стоит отметить, что Recovery Toolbox for MySQL не использует сторонние подключения. В процессе восстановления (может занять довольно продолжительное время, в зависимости от размеров исходной базы данных) ПО не использует доступ к Интернет.

Проконтролировать отсутствие подозрительных подключений можно разными способами, самым простым из которых является физическое отключение сетевого кабеля.

Есть способ чуть сложнее: установить анализатор сетевого траффика (советую WireShark, NetLimiter) и проверить, не идут ли подозрительные пакеты от Recovery Toolbox for MySQL.

???? В помощь!

Как запретить программе доступ к интернету (блокировка входящего/исходящего трафика)

Конечно, этот способ предполагает некий здоровый энтузиазм, желание познать новое (мануалы на WireShark совсем немаленькие) и, самое главное, наличие свободного времени…

  • *
  • Дополнения по теме — не помешают!
  • Всем успехов!
  • ????
  • Пост по заметкам
  • от компании Recovery Toolbox

Ошибки баз данных MySQL: что значят и как их исправить Ошибки баз данных MySQL: что значят и как их исправить RSS  (как читать Rss) Ошибки баз данных MySQL: что значят и как их исправить

Полезный софт:

    • Видео-Монтаж

Отличное ПО для создания своих первых видеороликов (все действия идут по шагам!).Видео сделает даже новичок!

    • Ускоритель компьютера

Программа для очистки Windows от «мусора» (удаляет временные файлы, ускоряет систему, оптимизирует реестр).

Другие записи:

  • Как переустановить Windows 10 (без потери данных)
  • Skype: не удалось установить соединение [ошибка]
  • Как пронумеровать страницы в Word (в т.ч. со 2-й страницы, с 3-ей и т.д.)

Помощь

В случае утери пароля создайте новый, выполнив следующие команды.

Остановите MySQL командой:

# service mysql stop — ОС Centos 6/Debian/Ubuntu

# systemctl stop mariadb — ОС Centos 7

либо

# systemctl stop mysqld

Выполните запуск MySQL без учета прав доступа командой:

# mysqld_safe —skip-grant-tables &

Зайдите пользователем root командой:

# mysql -uroot

Измените пароль:

# use mysql;

# UPDATE user SET Password=PASSWORD(«mypassword») WHERE User=’root’;

# FLUSH PRIVILEGES;

Перезагрузите сервер баз данных с учетом прав доступа командой:

Читайте также:  Ошибка 503 Service Unavailable: что значит и как грамотно исправить

# service mysqld restart — ОС Centos 6/Debian/Ubuntu

# systemctl restart mariadb — ОС Centos 7

либо

# systemctl restart mysqld

Выполните вход на MySQL сервер с новым паролем:

# mysql -uroot -p mypassword

Как просмотреть перечень ошибок MySQL сервера?

Для получения списка ошибок сервера баз данных просмотрите его лог-файлы. Для каждой ОС и файловой системы они располагаются в разных местах. Чтобы определить, где находятся лог-файлы MySQL на вашем сервере, подключитесь к серверу через консоль (например, Putty) и выполните команду, которая найдет файл my.cnf:

find / -name ‘my.cnf’

Результатом выполнения этой команды будут пути, по которым находится файл с этим именем.

Ошибки баз данных MySQL: что значят и как их исправить

Откройте любым редактором, например vi, найденный файл и найдите строки, начинающиеся с “log” или “log-error”

vi /etc/my.cnf Ошибки баз данных MySQL: что значят и как их исправить

Откройте редактором лог-файл по найденному пути и просмотрите ошибки.

Ошибки баз данных MySQL: что значят и как их исправить

Если в файле my.cnf нет строк, указывающих на лог-файлы, это значит, что контроль ошибок (логирование) не включен. Включите эту функцию, добавив в my.cnf строку:

[mysqld]

log-error=/var/log/mysql.log

где mysql.log – новый файл, куда будут записываться ошибки.

Создайте его и наделите привилегиями командами:

touch /var/log/mysql.log

chown mysql:mysql /var/log/mysql*

chmod 640 /var/log/mysql*

При необходимости просмотр лог-файла можно запустить в фоновом режиме, чтобы параллельно запускать другие директивы. Для этого выполните команду:

tail –f /var/log/mysql.log &

Возможные ошибки в лог-файле и их решение

В лог-файле или в браузере выдается ошибка:

Ошибки баз данных MySQL: что значят и как их исправить

Сообщение говорит о том, что в одной из баз данных появилась поврежденная таблица, которую можно восстановить. Для этого подключитесь через консоль к серверу и выполните команду проверки всех таблиц на целостность:

mysqlcheck —repair —analyze —optimize —all-databases -u –p

В случае ошибки запустите несколько команд:

mysqlcheck —repair —all-databases -u –p

mysqlcheck —analyze —all-databases -u –p

mysqlcheck —optimize —all-databases -u –p

где — пользователь базы данных, — пароль.

Если вы знаете, какая именно база данных повреждена, выполните команду:

mysqlcheck —repair —analyze —optimize -u -p

где

— пользователь базы данных, — пароль, — имя поврежденной базы.

Возникает ошибка вида:

Ошибки баз данных MySQL: что значят и как их исправить

Сообщение говорит о том, что запрещен доступ для пользователя user_xxx к базе данных или какой-то ее таблице.

Зайдите в ISPmanager, перейдите в раздел «Настройки» -> «Серверы баз данных», двойным кликом на имени сервера баз данных откройте его настройки.

Ошибки баз данных MySQL: что значят и как их исправить

Проверьте, что указанные данные в полях «Имя пользователя» и «Пароль» соответствуют тем, которые находятся в настройках сайта для подключения к этой БД.

Ошибки баз данных MySQL: что значят и как их исправить

На сайте возникает ошибка вида «Не удалось подключиться к базе данных»

Варианты сообщения об ошибке в случае неудачи при подключении к базе данных могут быть следующими:

Ошибки баз данных MySQL: что значят и как их исправить

Убедитесь, что сервер баз данных MySQL запущен. Зайдите в ISPmanager а раздел «Настройки» -> «Возможности» и проверьте, что в списке возможностей присутствует строка «Сервер СУБД MySQL» и лампочка в этой строке желтого цвета. Если лампочка выключена (синего цвета), то выделите строку и нажмите «Установить» на панели инструментов.

Ошибки баз данных MySQL: что значят и как их исправить

Если проблема не исчезла, то подключитесь к серверу через консоль и перезапустите MySQL командой:

/etc/init.d/mysqld restart — ОС Centos 6, Debian

systemctl restart mysqld — ОС Centos 7

Проверьте, что сервер корректно запустился, выполнив команду, которая выводит список процессов MySQL:

ps axuw | grep mysql

Если в результате не вывелось ни одного процесса, то MySQL не запустился.

Не удается запустить MySQL

Попробуйте запустить MySQL через панель управления ISPmanager. Если не получилось, то подключитесь к серверу по SSH и попробуйте запустить MySQL через консоль командой:

/etc/init.d/mysqld restart — ОС Centos 6, Debian

systemctl restart mariadb — ОС Centos 7

Если MySQL не запускается через консоль, вы получите сообщение об ошибке вида:

Проверьте свободное место на диске командой

df -h Ошибки баз данных MySQL: что значят и как их исправить

Команда

du –hs /*

  • выведет, сколько места занимает каждая директория.
  • Если свободного места осталось мало, освободите его, очистив в первую очередь лог-файлы MySQL и других служб.
  • Перезапустите MySQL через консоль командами, приведенными выше.

Если проблема сохранилась, внимательно изучите записи в лог-файле MySQL, начинающиеся с [ERROR]. Например, запись Error while setting value ‘—read_buffer_size=256K’ to ‘sort_buffer_size’ означает, что директива sort_buffer_size в конфигурационном файле MySQL, прописана не верно.

Устраняем типичные ошибки в MySQL

MySQL — система управления базами данных (СУБД) с открытым исходным кодом от компании Oracle. Она была разработана и оптимизирована специально для работы веб-приложений. MySQL является неотъемлемой частью таких веб-сервисов, как Facebook, Twitter, Wikipedia, YouTube и многих других.

Эта статья расскажет, как определять, с чем связаны частые ошибки на сервере MySQL, и устранять их.

Не удаётся подключиться к локальному серверу

Одной из распространённых ошибок подключения клиента к серверу является «ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)».

Ошибки баз данных MySQL: что значят и как их исправить

Эта ошибка означает, что на хосте не запущен сервер MySQL (mysqld) или вы указали неправильное имя файла сокета Unix или порт TCP/IP при попытке подключения.

Убедитесь, что сервер работает. Проверьте процесс с именем mysqld на хосте сервера, используя команды ps или grep, как показано ниже.

$ ps xa | grep mysqld | grep -v mysqld

Если эти команды не показывают выходных данных, то сервер БД не работает. Поэтому клиент не может подключиться к нему. Чтобы запустить сервер, выполните команду systemctl.

$ sudo systemctl start mysql #Debian/Ubuntu
$ sudo systemctl start mysqld #RHEL/CentOS/Fedora

Чтобы проверить состояние службы MySQL, используйте следующую команду:

$ sudo systemctl status mysql #Debian/Ubuntu
$ sudo systemctl status mysqld #RHEL/CentOS/Fedora
Ошибки баз данных MySQL: что значят и как их исправить

Если в результате выполнения команды произошла ошибка службы MySQL, вы можете попробовать перезапустить службу и ещё раз проверить её состояние.

$ sudo systemctl restart mysql
$ sudo systemctl status mysql
Ошибки баз данных MySQL: что значят и как их исправить

Если сервер работает (как показано) и вы по-прежнему видите эту ошибку, вам следует проверить, не заблокирован ли порт TCP/IP брандмауэром или любой другой службой блокировки портов.

Для поиска порта, который прослушивается сервером, используйте команду netstat.

$ sudo netstat -tlpn | grep «mysql»

Не удаётся подключиться к серверу MySQL

Ещё одна похожая и часто встречающаяся ошибка подключения — «(2003) Can’t connect to MySQL server on ‘server’ (10061)». Это означает, что в сетевом соединении было отказано.

Следует проверить, работает ли в системе сервер MySQL (смотрите выше) и на тот ли порт вы подключаетесь (как найти порт, можно посмотреть выше).

Похожие частые ошибки, с которыми вы можете столкнуться при попытке подключиться к серверу MySQL:

ERROR 2003: Cannot connect to MySQL server on ‘host_name’ (111)
ERROR 2002: Cannot connect to local MySQL server through socket ‘/tmp/mysql.sock’ (111)

Ошибки запрета доступа в MySQL

В MySQL учётная запись (УЗ) определяется именем пользователя и клиентским хостом, с которого пользователь может подключиться. УЗ может также иметь данные для аутентификации (например, пароль).

Причин для запрета доступа может быть много. Одна из них связана с учётными записями MySQL, которые сервер разрешает использовать клиентским программам при подключении. Это означает, что имя пользователя, указанное в соединении, может не иметь прав доступа к базе данных.

Читайте также:  Ошибка 502 Bad Gateway nginx: что значит и как правильно исправить

В MySQL есть возможность создавать учётные записи, позволяющие пользователям клиентских программ подключаться к серверу и получать доступ к данным. Поэтому при ошибке доступа проверьте разрешение УЗ на подключение к серверу через клиентскую программу.

Увидеть разрешённые привилегии учётной записи можно, выполнив в консоли команду SHOW GRANTS
Входим в консоль (пример для Unix, для Windows консоль можно найти в стартовом меню):

В консоли вводим команду:

> SHOW GRANTS FOR ‘tecmint’@’localhost’;

Дать привилегии конкретному пользователю в БД по IP-адресу можно, используя следующие команды:

> grant all privileges on *.test_db to ‘tecmint’@’192.168.0.100’;
> flush privileges;

Ошибки запрещённого доступа могут также возникнуть из-за проблем с подключением к MySQL (см. выше).

Потеря соединения с сервером MySQL

С этой ошибкой можно столкнуться по одной из следующих причин:

  • плохое сетевое соединение;
  • истекло время ожидания соединения;
  • размер BLOB  больше, чем max_allowed_packet.

В первом случае убедитесь, что у вас стабильное сетевое подключение (особенно, если подключаетесь удалённо).

Если проблема с тайм-аутом соединения (особенно при первоначальном соединении MySQL с сервером), увеличьте значение параметра connect_timeout.

В случае с размером BLOB нужно установить более высокое значение для max_allowed_packet в файле конфигурации /etc/my.cnf в разделах [mysqld] или [client] как показано ниже.

[mysqld]
connect_timeout=100
max_allowed_packet=500M

Если файл конфигурации недоступен, это значение можно установить с помощью следующей команды.

> SET GLOBAL connect_timeout=100;
> SET GLOBAL max_allowed_packet=524288000;

Слишком много подключений

Эта ошибка означает, что все доступные соединения используются клиентскими программами. Количество соединений (по умолчанию 151) контролируется системной переменной max_connections. Устранить проблему можно, увеличив значение переменной в файле конфигурации /etc/my.cnf.

[mysqld]
max_connections=1000

Недостаточно памяти

Если такая ошибка возникла, это может означать, что в MySQL недостаточно памяти для хранения всего результата запроса.

Сначала нужно убедиться, что запрос правильный. Если это так, то нужно выполнить одно из следующих действий:

  • если клиент MySQL используется напрямую, запустите его с ключом —quick switch, чтобы отключить кешированные результаты;
  • если вы используете драйвер MyODBC, пользовательский интерфейс (UI) имеет расширенную вкладку с опциями. Отметьте галочкой «Do not cache result» (не кешировать результат).

Также может помочь MySQL Tuner. Это полезный скрипт, который подключается к работающему серверу MySQL и даёт рекомендации по настройке для более высокой производительности.

$ sudo apt-get install mysqltuner #Debian/Ubuntu
$ sudo yum install mysqltuner #RHEL/CentOS/Fedora
$ mysqltuner

MySQL продолжает «падать»

Если такая проблема возникает, необходимо выяснить, заключается она в сервере или в клиенте. Обратите внимание, что многие сбои сервера вызваны повреждёнными файлами данных или индексными файлами.

Вы можете проверить состояние сервера, чтобы определить, как долго он работал.

$ sudo systemctl status mysql #Debian/Ubuntu
$ sudo systemctl status mysqld #RHEL/CentOS/Fedora

Чтобы узнать время безотказной работы сервера, запустите команду mysqladmin.

$ sudo mysqladmin version -p
Ошибки баз данных MySQL: что значят и как их исправить

Кроме того, можно остановить сервер, сделать отладку MySQL и снова запустить службу. Для отображения статистики процессов MySQL во время выполнения других процессов откройте окно командной строки и введите следующее:

$ sudo mysqladmin -i 5 status

Или

$ sudo mysqladmin -i 5 -r status

Заключение

Самое важное при диагностике — понять, что именно вызвало ошибку. Следующие шаги помогут вам в этом:

  • Первый и самый важный шаг — просмотреть журналы MySQL, которые хранятся в каталоге /var/log/mysql/. Вы можете использовать утилиты командной строки вроде tail для чтения файлов журнала.
  • Если служба MySQL не запускается, проверьте её состояние с помощью systemctl. Или используйте команду journalctl (с флагом -xe) в systemd.
  • Вы также можете проверить файл системного журнала (например, /var/log/messages) на предмет обнаружения ошибок.
  • Попробуйте использовать такие инструменты, как Mytop, glances, top, ps или htop, чтобы проверить, какая программа использует весь ресурс процессора или блокирует машину. Они также помогут определить нехватку памяти, дискового пространства, файловых дескрипторов или какого-либо другого важного ресурса.
  • Если проблема в каком-либо процессе, можно попытаться его принудительно остановить, а затем запустить (при необходимости).
  • Если вы уверены, что проблемы именно на стороне сервера, можете выполнить команды: mysqladmin -u root ping или mysqladmin -u root processlist, чтобы получить от него ответ.
  • Если при подключении проблема не связана с сервером, проверьте, нормально ли работает клиент. Попробуйте получить какие-либо его выходные данные для устранения неполадок.

Перевод статьи «Useful Tips to Troubleshoot Common Errors in MySQL»

Ошибки баз данных MySQL и их исправление

Предлагаем вашему вниманию список наиболее популярных ошибок, которые возникают в работе баз данных MySQL.

Сложности с импортом БД, размер которой больше 8 мб

Обычно такая проблема вызвана импортомэкспортом базы данных большого размера, с помощью интерфейса phpMyadmin.

Чтобы ее избежать, нужно импортироватьэкспортировать БД с помощью SSH-команды (предварительно залив файл БД на сервер). О том, как это сделать читайте здесь.

Если не помогает этот способ, то придется каждый раз дергать техническую поддержку, чтобы они сами проводили импортэкспорт.

Как исправить ошибки: «Database Error: Unable to connect to the database», «Невозможно подключиться к базе», «DB Error»

Как правило эти ошибки сопровождаются полной неработоспособностью сайта. А возникают они из-за того, что в конфигурационных файлах (название файла зависит от CMS, но обычно — configuration.

php, wp-config.php, config.php и т.д.) неправильно указаны реквизиты базы данных.

Узнать их можно в панели-управления хостингом, а также в первом письме, которое приходит от хостинг-провайдера и обычно содержит настройки.

Особое внимание уделите таким реквизитам:

  • сервер баз данных (обычно localhost)
  • имя БД (например u12345_database)
  • имя пользователя БД (например u12345_user)
  • пароль.

Как исправить ошибку при работе Order By?

Order By используют для сортировки результирующих таблиц данных. Иногда сортировка не срабатывает, если речь идет о файле большого объема. Обычна проблема заключается в переменной «max sort length», которая используется при настройке MySQL-сервера.

Эта переменная задает максимальный размер строки, по которой происходит сортировка. Как правило хостеры устанавливают значение — 32 байта, и самостоятельно изменить эту переменную практически невозможно (кроме услуг выделенного сервера, аренды сервера и т.д.).

Поэтому пользователям обычного хостинга, с данной проблемой рекомендуем сразу обращаться в техническую поддержку.

Как исправить ошибку Got Error 127 from storage engine?

Обычно эта ошибка возникает из-за того, что дисковая квота превышена. Как правило, хостеры хранят базу данных на том же сервере, что и файлы сайта.

Поэтому если полностью забить дисковое пространство (на сервере хостинга) файлами сайта, то БД некуда будет сохранять свои данные.

Так что решением этой проблемы будет либо удаление лишних файлов с сервера, либо покупка более дорогого тарифного плана (с большей дисковой квотой).

Исправление ошибок в базе MySQL

Одной из ярких причин возникновения ошибок в базе данных может послужить неправильная остановка сервера MySQL. Как это обычно бывает, сбой в электропитании сервера, либо иные причины, повлекшие за собой банальное отключение машины, либо перезагрузку.

Иногда, и нередко подобного рода сбои могут повлечь за собой проблемы, которые решаются лишь путем восстановления данных из бэкапа, и это к вопросу для чего нужно делать бэкапы. Наличие ошибок в базе данных может проявиться не сразу, однако если они есть, то вы их рано или поздно обязательно заметите.

Читайте также:  Ошибка 505 https Version not supported: что значит и как грамотно исправить

Проблемы, как правило, проявляются в виде ошибок после запросов к базе, либо база начинает уходить в раздумье на не свойственное для этого время.
Давайте посмотрим, что можно предпринять первым делом, чтобы попытаться исправить ситуацию.

Утилита mysqlcheck как правило устанавливается по умолчанию с сервером MySQL может быть использована для проверки баз данных на ошибки. Рассмотрим пример ее использования.

Использование утилиты mysqlcheck

# mysqlcheck -u root -p —optimize —auto-repair —all-databases

Назначение параметров:

—optimize – Оптимизируем все базы.
—auto-repair – Ремонтируем все базы.
—all-databases – Проверяем ошибки у всех баз.

  • Если база данных больших размеров, а вам нужно срочно поправить определенную таблицу, то вы можете запустить проверку определенной таблицы в базе данных.
  • Проверка отдельной таблицы в базе данных:

# mysqlcheck -r имя_базы имя_таблицы_в_базе -u root -p

Исправление таблиц MyISAM.
Так же существует утилита myisamchk, отличается от предыдущей утилиты тем, что перед её использованием необходимо останавливать сервер баз данных, в то время как mysqlcheck может использоваться при работающем сервере. Рассмотрим пример использования утилиты myisamchk.

Останавливаем сервер MySQL

# service mysqld stop

Анализируем базу данных на наличие ошибок

# myisamchk -s /var/db/mysql/наша_база/*.MYI

Обратите внимание, что путь к базам данных у вас может отличаться, этот момент вам следует так же уточнить. Если есть ошибки, то появиться сообщение подобного вида:

myisamchk: warning: 2 client is using or hasn’t closed the table properly
MyISAM-table ‘/var/db/mysql/наша_база/ary_mem.MYI’ is usable but should be fixed

Исправляем ошибки с помощью myisamchk

# myisamchk -r /var/db/mysql/наша_база/ary_mem.MYI

Исправляем ошибки по всем таблицам в базе (рекурсивно)

# myisamchk -r /var/db/mysql/наша_база/*.MYI

Процесс исправления ошибок будет сопровождаться подобным выводом сообщений в окне консоли:

— Fixing index 1
— Fixing index 2
— Fixing index 3

После того как ошибки исправлены, можно запустить сервер MySQL, чтобы убедиться что всё в порядке.
Запуск сервера MySQL

# service mysqld start

Хотелось бы отметить один момент, что команды остановки и запуска сервера MySQL, а так же пути расположения баз данных на вашем сервере могут отличаться, поэтому вам так же следует эти моменты учесть.

Исправление ошибок в базе данных MySQL

Некоторые типы ошибок в работе с базой данных MySQL при импорте или экспорте базы данных.

Ошибка 1

При экспорте MySQL через phpMyAdmin возникала ошибка, которая приводила к невозможности выполнить сохранение база данных. Причина была в испортившихся таблицах, из-за которой и возникала ошибка.

Ошибка была следующего вида:

Не удалось создать резервную копию базы данных. Процесс завершился с ошибкой: ‘mysqldump: Got error: 1146: Table ‘site.wp_subscribe_reloaded_subscribers’ doesn’t exist when using LOCK TABLES

Решение

Через SSH зайти на VDS.

Использовать команду:

mysqlcheck -u MySQL_name -p MySQL_user_name

Ввести пароль от базы данных.

У меня был выведен список всех таблиц, где несуществующая таблица была показана с ошибкой. В самой базе данных MySQL её не было, а phpMyAdmin на неё все равно ругался.

MySQL_name.wp_statpress                           OK MySQL_name.wp_subscribe_reloaded_subscribers Error    : Table ‘MySQL_name.wp_subscribe_reloaded_subscribers’ doesn’t exist status   : Operation failed

MySQL_name.wp_term_relationships                  OK

  • Ввести команду (подтвердить паролем):
  • Появится такая строка:
  • Нужно выбрать базу данных:
  • Показать таблицы в ней (Точка с запятой обязательна!):
  • Будут показаны все таблицы.
  • После этого удалил таблицу:

drop table wp_subscribe_reloaded_subscribers;

Появилась ошибка:

ERROR 1051 (42S02): Unknown table ‘wp_subscribe_reloaded_subscribers’

но при этом она была удалена и больше нигде не отображалась, а экспорт заработал.

Ошибка 2

Сообщение об ошибки возникло на CentOS с ISPmanager.

При создании базы данных с именем, которое когда-то существовало, возникала ошибка:
«Имя базы уже существует»

Имя базы было в таблице db в системной базе MySQL. Удаление записи оттуда решило эту проблему.

Ошибка 3

При импорте базы данных возникала следующая ошибка:

#1064 — You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘…..sql’ at line 1

В архиве базы данных находилось несколько файлов. Надо было разархивировать архив и заархивировать только файл базы данных.

Ошибка 4

You probably tried to upload a file that is too large. Please refer to documentation for a workaround for this limit.

Решение приведено статье ошибка при импорте в phpMyAdmin.

Кстати, на сайте нет рекламы. У сайта нет цели самоокупаться, но если вам пригодилась информация можете задонатить мне на чашечку кофе в макдаке. Лайкнуть страницу или просто поблагодарить. Карма вам зачтется.

Решение проблем с MySQL

Статья давно не обновлялась, поэтому информация могла устареть.

Создание базы через ISPmanager

На корректно работающем VDS создание базы займет не больше 5 минут. В левом меню ISPmanager находим раздел «Базы данных» — Создать — заполнить необходимые поля — пароли рекомендуем создавать сложные.

Теперь немного о тех местах, где могут возникнуть сложности.

Раздела «Базы данных» нет в меню

Есть 2 возможных варианта и пути решения проблемы:

1)На сервере не запущен сервер баз данных MySQL:

  1. Проверить, активен ли сервис, вы можете в меню «Сервисы» панели ISPmanager. Попробуйте запустить или перезапустить его с помощью кнопок в панели.
  2. Если не помогло, перезапустите из консоли командой /etc/init.d/mysql restart для Ubuntu/Debian/Centos 6 или командой systemctl restart mariadb для Centos 7.

2) Проблемы с подключением к базе данных: Откройте пункт меню «Серверы баз данных», двойным кликом откройте свойства и нажмите «OK», ничего не меняя. Это принудительно обновит информацию о MySQL в панели управления. После этого обновите страницу — пункт «Базы данных» должен появиться.

Не подходит пароль к серверу баз данных

  • Случается так, что пароль root от MySQL-сервера утерян, и надо установить новый. Делается следующим образом:
  • Останавливаем MySQL-сервер:
  • В Centos 6/Debian/Ubuntu:

# service mysql stop

В Centos 7:

# systemctl stop mariadb

или

# systemctl stop mysqld

Запускаем его без проверки таблиц прав:

# mysqld_safe —skip-grant-tables &

Заходим root’ом без пароля:

# mysql -uroot

Меняем пароль:

# use mysql;

MySQL < 5.7

# UPDATE user SET Password=PASSWORD(«new_password») WHERE User=’root’;

MySQL => 5.7

# UPDATE user SET authentication_string=PASSWORD(«new_password») WHERE User=’root’;

Продолжаем для всех версий

# FLUSH PRIVILEGES;

В Centos 6/Debian/Ubuntu:

# service mysqld restart

В Centos 7:

# systemctl restart mariadb

или

# systemctl restart mysqld

Авторизуемся как root с паролем new_password

# mysql -uroot -pnew_password

Где искать ошибки?

MySQL — свободная реляционная система управления базами данных. Поиск проблем с сервисом лучше всего начинать с изучения логов.

Для этого необходимо подключиться на сервер по ssh Их расположение разнится в зависимости от используемой файловой системы. В конфигурационном файле my.

cnf нужно искать строки log и log-error, чтобы определить, где находятся логи. Также можно воспользоваться mysql запросом:

Ссылка на основную публикацию