mysqldump: Got error: 144: «Table is marked as crashed and last (automatic?) repair failed» when using LOCK TABLES

Admin MySQL, VPS (VDS) Обсудить

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

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

mysqldump: Got error: 144: "Table './database_name/wp_post_views_history' is marked as crashed and last (automatic?) repair failed" when using LOCK TABLES

В phpMyAdmin таблица указана была как используется.

Попробовал починить таблицу консольными командами и через SQL запросы в phpMyAdmin, но ничего не вышло.

Для починки таблицы через консольную команду (может кому-нибудь поможет и такой способ), сначала нужно зайти на сервер через Терминал.

Теперь заходим в свою базу данных:

mysql -u user_name -p name_mysql

Если вводите команду и получаете ошибку:

[root@kvm-4372]# mysql -u user_name -p name_mysql
Enter password:
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password: YES)

Значит вводите неправильные «имя базы данных», «имя пользователя базы данных» или «пароль к базе данных».

При успешном соединении будет так:

[root@kvm-4372]# mysql -u user_name -p name_mysql
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 101978
Server version: 5.5.52-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Мне починить не удалось, возникли такие ошибки:

MariaDB [name_mysql]> mysql> check table wp_post_views_history;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'mysql> check table wp_post_views_history' at line 1

Тогда я попробовал провести починку через SQL запросы в phpMyAdmin, тоже не помогло. Возможно вводил неверные команды, потому что получал следующие сообщения:

Статический анализ:
Найдено 3 ошибок при анализе.

1. Неожиданное начало выражения. (near "myisamchk" at position 0)
2. Неожиданное начало выражения. (near "safe" at position 12)
3. Unrecognized statement type. (near "recover" at position 17)

SQL запрос:
myisamchk --safe-recover wp_post_views_history
Ответ MySQL:

#1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MariaDB на предмет корректного синтаксиса около 'myisamchk --safe-recover wp_post_views_history' на строке 1

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

Решение оказалось куда более простым. У меня была сохраненная правильная резервная копия базы данных. Таблица wp_post_views_history не являлась для меня ключевой и её более ранняя копия мне вполне подходила.

Я импортировал старую базу данных через phpMyAdmin в отдельную базу данных. Затем выделил таблицу wp_post_views_history и экспортировал её отдельно.

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

Последним действием импортировал рабочую таблицу wp_post_views_history и всё стало работать.

Вот почему важно делать резервные копии.

Привет. Ты находишься на моём сайте. Я разработчик. Здесь я делюсь своими наработками и знаниями. Спрашивай в комментариях, если тебе что-то не понятно или пиши, если есть что добавить.

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи: "mysqldump: Got error: 144: «Table is marked as crashed and last (automatic?) repair failed» when using LOCK TABLES"
Если вам нужно добавить участок кода ставьте его между тегами <code></code>