Myisamchk error 140 when opening myisam table

i have this error when run repair? myisamchk: error: 140 when opening MyISAM-table '/var/lib/mysql/zibarsho_karno/wp_yoast_seo_links.MYI' how i can fix this ???

i have this error when run repair?

myisamchk: error: 140 when opening MyISAM-table '/var/lib/mysql/zibarsho_karno/wp_yoast_seo_links.MYI'

how i can fix this ???

asked Mar 17, 2018 at 15:41

R Shahpari's user avatar

2

ls *.MYI | sed 's/.[^.]*$//' | xargs myisamchk -F -U

Saved me here because of basename extra operand and other issue. Please note -F -U are for Fast and UPDATE STATUS flag. You can use without it.

answered Nov 13, 2019 at 1:51

farness's user avatar

farnessfarness

3692 silver badges11 bronze badges

1

This is a bug already reported since MySQL 5.6

Still happening in 8.0.11 so in the mean time you can use the walkarround solution.

Not using the MYI extension.

myisamchk  --force --update-state var/lib/mysql/zibarsho_karno/wp_yoast_seo_links

answered Jun 12, 2018 at 14:36

Jesus Uzcanga's user avatar

1

As user Jesus Uzcanga already mentioned, it is an old bug which hasn’t been fixed yet [current version is 8.0.15].

These commands are a workaround when you run it directly in the directory where the .MYI files are located:

ls *.MYI | xargs basename -s .MYI | xargs myisamchk

It removes the extension and runs myisamchk for each MyISAM data file.

answered Mar 5, 2019 at 12:30

Peter VARGA's user avatar

Peter VARGAPeter VARGA

4,5783 gold badges37 silver badges73 bronze badges

2

try use this :

find /var/lib/mysql/*/* -name '*.MYI' | sed -e 's/.MYI$//' | xargs -I{} myisamchk -r -f -o {}

answered Jul 19, 2022 at 8:37

Mahdi Akrami's user avatar

Mahdi AkramiMahdi Akrami

4561 gold badge4 silver badges12 bronze badges

ls *.MYI | xargs basename -s .MYI | xargs -I{} myisamchk -r --force {}

answered May 16, 2019 at 7:53

Gatis Rumbens's user avatar

2

Содержание

  1. Исправляем поврежденные MySQL-таблицы с myisamchk
  2. 1. Определяем все поврежденные таблицы, используя myisamchk
  3. 2. Исправляем поврежденные таблицы, используя myisamchk
  4. 3. Запускаем проверку и исправлением для всей БД MySQL
  5. 4. Использование дополнительной памяти для больших БД MySQL
  6. 5. Использование myisamchk для получения данных о таблице
  7. 6. Все опции myisamchk
  8. Myisamchk: ошибка: 140 при открытии MyISAM-таблицы
  9. linux-notes.org
  10. Исправляем поврежденные MyISAM таблицы с myisamchk
  11. Опции для работы с myisamchk.
  12. How To Repair Corrupted MySQL Tables Using myisamchk
  13. 1. Identify all corrupted tables using myisamchk
  14. 2. Repair the corrupted table using myisamchk
  15. 3. Perform check and repair together for entire MySQL database
  16. 4. Allocate additional memory for large MySQL database
  17. 5. Use myisamchk to get information about a table
  18. 6. All myisamchk options

Исправляем поврежденные MySQL-таблицы с myisamchk

MyISAM — основная, вернее, одна из главных (наряду с InnoDB) систем хранения данных в СУБД MySQL. При этом MyISAM таблицы повреждаются очень просто — с этим проблем нет никаких. Сложнее все повреждения ликвидировать, хотя это тоже можно сделать довольно быстро. В этом материале объясняется, как можно решить проблему с использованием myisamchk для идентификации проблемы с MyISAM и ее исправления.

Общеизвестно, что при создании таблицы в MySQL, создаются три различных файла: *.frm — формат таблицы, *.MYD (MyData) — хранение данных, *.MYI (MyIndex) — индекс. Для крупных баз данных стоит использовать InnoDB, поскольку здесь есть некоторая схожесть с Oracle и соответствующая функциональность.

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

Понятно, что таблица attach_data повреждена, и ее нужно исправить. Таблицу будем исправлять с использованием myisamchk.

1. Определяем все поврежденные таблицы, используя myisamchk

Если указать вывод myisamchk во временный файл, на дисплее будут показаны только имена поврежденных таблиц. А вот в файле /tmp/myisamchk_log.txt будет указано гораздо больше данных включая имена неповрежденных таблиц:

2. Исправляем поврежденные таблицы, используя myisamchk

Для этого используем myisamchk, с опцией -r, как и показано ниже:

Здесь может появиться сообщение об ошибке: clients are using or haven’t closed the table properly, в случае, если таблицы до сих пор используются каким-либо приложением или другими таблицами. Для того, чтобы избежать появления этой ошибки, стоит завершить mysqld, прежде, чем начать исправление таблиц. Здесь можно использовать FLUSH TABLES.

3. Запускаем проверку и исправлением для всей БД MySQL

-s: выводим только ошибки. Можно использовать двойной -s -s, чтобы сделать режим максимально «тихим»;
-f: автоматический перезапуск myisamchk с опцией -r, есть обнаружены ошибки;
-F: проверка только таблиц, которые не были закрыты в нормальном режиме;
-U: отмечаем таблицы, как поврежденные, если обнаружены ошибки.

4. Использование дополнительной памяти для больших БД MySQL

В случае работы с большими БД восстановление может занять несколько часов. Если есть дополнительные ресурсы, их можно использовать для ускорения процесса:

5. Использование myisamchk для получения данных о таблице

При необходимости можно получить довольно много данных.

6. Все опции myisamchk

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

-s: только вывод ошибок;
-v: вывод большего количества информации;
-V: вывод версии и выход;
-w: ждать, если таблица заблокирована.

-c: проверка таблиц на ошибки;
-е: очень «грубая» проверка. Стоит использовать только в крайнем случае, если в обычном режиме ошибки не обнаруживаются;
-F: быстрая проверка, проверяются только таблицы, которые не закрывались правильно;
-С: проверка только таблиц, которые изменились со времени последней поверки;
-f: автоматический перезапуск myisamchk с опцией -r, есть обнаружены ошибки;
-i: вывод статистики по проверенным таблицам;
-m: облегченный режим проверки, быстрее, чем обычный, находится 99,99% ошибок;
-U: обновление статуса: пометка таблиц как поврежденных, если обнаруживаются любые ошибки;
-T: не помечать таблицы как проверенные.

Источник

Myisamchk: ошибка: 140 при открытии MyISAM-таблицы

у меня эта ошибка при запуске ремонта?

как я могу это исправить .

Запускать без «.MYI» myisamchk -a /var/lib/mysql/zibarsho_karno/wp_yoast_seo_links Ссылка: bugs.mysql.com/bug.php?id=87729#c467037

хотите запустить этот myisamchk —safe-recovery /var/lib/mysql/*/*.MYI

Об этой ошибке уже сообщалось, начиная с MySQL 5.6.

Все еще происходит в 8.0.11, поэтому вы можете использовать решение walkarround.

Не использовать расширение MYI.

И все еще существует в версии 8.0.15 — за 2017 год был указан как ошибка и еще не исправлен.

Как уже упоминал пользователь Хесус Узчанга, это старый ошибка, который еще не был исправлен [текущая версия — 8.0.15].

Эти команды являются обходным решением, если вы запускаете его непосредственно в каталоге, где находятся файлы .MYI :

Он удаляет расширение и запускает myisamchk для каждого файла данных MyISAM.

Хороший ответ. Я не знал xargs . Кажется, это мощная команда / программа.

Добавление -r к команде myisamchk также восстановит поврежденные таблицы.

Источник

linux-notes.org

Исправляем поврежденные MyISAM таблицы с myisamchk

MyISAM — наиболее часто используемая система для хранения данных в MySQL и иногда, таблицы повреждаются очень часто. В данной теме «Исправляем поврежденные MyISAM таблицы с myisamchk» я расскажу как можно отремонтировать поврежденные таблицы MyISAM с использованием myisamchk.

Когда вы создаете таблицу в MySQL, при этом создаются файлы:

  • *.frm — служит форматом для таблиц.
  • *.MYD (MyData) — сохраняются данных.
  • *.MYI (MyIndex) — индексный файл.

Для более больших БД настоятельно рекомендуется юзать не MyISAM а именно — InnoDB, т.к в ней содержится подобные черты с Oracle и его функционал.

1. Первое что стоит сделать, так это вывести все поврежденные таблицы:

Если указать вывод myisamchk во временный файл, на дисплее будут показаны только имена поврежденных таблиц. А вот в файле /tmp/myisamchk_log_file.txt будет указано гораздо больше данных включая имена не поврежденных таблиц. Вы можете прочитать и ознакомится:

2. Чтобы пофиксить поврежденную таблицу (my_cards) я буду использовать myisamchk, с параметром -r:

Или все таблицы:

Тут может показать ошибку «clients are using or haven’t closed the table properly» и если видите данную ошибку, то исправлением служит завершение демона mysql (до старта исправления таблиц).

Используем команду FLUSH TABLES.

Запущу проверку и исправление всех повреждений для всей БД (my_bugs):

-s: Показывает только ошибки. Можно так же использовать -s -s, для использования максимально «тихого» режима;
-f: С параметром -r выполняется автоматическая перезагрузка myisamchk если обнаружены ошибки;
-F: Выполняется проверка только тех таблиц, которые не были закрыты при нормальном режиме;
-U: Отметим таблицы как поврежденные, при появлении ошибки.

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

Если есть необходимость, можно получить очень много полезной информации:

Опции для работы с myisamchk.

Для использования утилиты, используйте список возможных команд:

Основные опции:

-s: Показать только ошибки;
-v: Выводит много различной информации;
-V: Показывает версию утилиты и завершается;
-w: Ожидание, если таблица заблокирована.

Опции для проверки:

-c: Служит для проверки таблиц на ошибки;
: «грубая» проверка. Стоит использовать ее крайне редко (когда в обычном режиме не найдены ошибки);
-F: Проверка (быстрая), в которой проверяются одни таблицы, которые правильно не закрывались;
: Проверять только те таблицы, в которых производились изменения со времени последней поверки;
-f: Перезапуск myisamchk в автоматическом режиме если обнаружены какие то ошибки с опцией -r ;
-i: Показать инфу по проверенным таблицам;
-m: «Легкий» режим проверки, он работает быстрее чем обычный и тут находится 99,99% ошибок;
-U: Обновляет статус: делает пометку таблиц как поврежденных при обнаружении любой ошибки;
-T: Не помечать таблицы как проверенные.

Опции для исправления:

-B: Бэкап файла .MYD, «filename-time.BAK»;
—correct-checksum;
: Попытка исправить макс числа строк в файле ( данная команда ищет «мусорные» строки). Не используйте данную опцию, если ситуация не безнадежна;
-f: Перезаписать временные старые файлы;
-r: Исправить практически все, но кроме уникальных ключей, которые на самом деле не уникальны;
-n: Принудительно сортировать и выполнять даже, если временный файл очень большой;
: Использовать старый метод для восстановления;
-q: Быстрое исправление и без каких-либо модификаций файла данных;
-u: Распаковать файлы, запакованного myisampack.

Другие опции:

-a, —analyze : Анализ распределенных ключей. Сделает некоторые JOIN в MySQL быстрее. Вы можете проверить расчетное распределение с помощью ‘—description —verbose table_name‘.

-d, —description : вывести некоторую информацию о таблице.

Еще один метод по восстановлению таблиц.

Хотя, Mysqlcheck и Myisamchk схожи в целях, есть некоторые существенные различия. Mysqlcheck а также Myisamchk можете проверить и отремонтировать, а так же анализировать MyISAM таблиц. Mysqlcheck также можете проверить таблицы InnoDB.

Показывает, если нужен какой-то ремонт:

Для начала, попробуйте «безопасного восстановление»:

И, если ничего не нужно, то не выполняйте это:

Если не помогло, то используйте флаг — ‘force’:

Если все что выше, не помогло,то стоит попытаться использовать Mysqlcheck:

Восстановить все базы:

Проанализировать все базы:

Оптимизировать все базы:

Восстанавливаем одну базу:

Восстанавливаем один столбец в базе:

Статья «Исправляем поврежденные MyISAM таблицы с myisamchk» завершена.

Источник

How To Repair Corrupted MySQL Tables Using myisamchk

MyISAM is the default storage engine for MySQL database. MyISAM table gets corrupted very easily. In this article, I’ll explain how to use myisamchk to identify and fix table corruption in MyISAM. When a table is created under MySQL, it creates three different files: *.frm file to store table format, *.MYD (MyData) file to store the data, and *.MYI (MyIndex) to store the index. I prefer to use InnoDB as the storage engine for bigger database, as it resembles Oracle and provides commit, rollback options.

I got the following error from a production bugzilla application that is using MySQL database. From the error message, it is clear that attach_data table is corrupted and needs to be reparied. The corrupted table can be repaired using myisamchk as explained below.

1. Identify all corrupted tables using myisamchk

When you redirect the output of myisamchk to a temporary file, it will display only the corrupted table names on the screen. The /tmp/myisamchk_log.txt file will contain information about all the tables including the good ones, as shown below:

2. Repair the corrupted table using myisamchk

Execute the myisamchk as shown below, with -r option to repair the corrupted tables identified in the above step.

You may get error message: clients are using or haven’t closed the table properly, if the tables are still getting used by your application and other tables. To avoid this error message, shutdown mysqld before performing the repair, if you can afford to shutdown the DB for a while. If not, use FLUSH TABLES to force mysqld to flush any table modification that are still in memory.

3. Perform check and repair together for entire MySQL database

  • -s, —silent option: Prints only errors. You can use two -s to make myisamchk very silent.
  • -f, —force option: Restart myisamchk automatically with repair option -r, if there are any errors in the table.
  • -F, —fast option: Check only tables that haven’t been closed properly.
  • -U —update-state option: Marks tables as crashed, when it finds any error.

4. Allocate additional memory for large MySQL database

For large database, it may take several hours to recover the tables. Depending on RAM available on your system, increase the memory parameters as shown below while executing the myisamchk:

5. Use myisamchk to get information about a table

You can also use myisamchk to get detailed information about a table, as shown below.

6. All myisamchk options

Execute the following command to understand all the available option for myisamchk.

Following are some of the key options that you can use along with myisamchk.

Global options:

  • -s, —silent Only print errors. One can use two -s to make myisamchk very silent.
  • -v, —verbose Print more information. This can be used with —description and —check. Use many -v for more verbosity.
  • -V, —version Print version and exit.
  • -w, —wait Wait if table is locked.

Check options (check is the default action for myisamchk):

  • -c, —check Check table for errors.
  • -e, —extend-check Check the table VERY throughly. Only use this in extreme cases as myisamchk should normally be able to find out if the table is ok even without this switch.
  • -F, —fast Check only tables that haven’t been closed properly.
  • -C, —check-only-changed Check only tables that have changed since last check.
  • -f, —force Restart with ‘-r’ if there are any errors in the table. States will be updated as with ‘—update-state’.
  • -i, —information Print statistics information about table that is checked.
  • -m, —medium-check Faster than extend-check, but only finds 99.99% of all errors. Should be good enough for most cases.
  • -U —update-state Mark tables as crashed if you find any errors.
  • -T, —read-only Don’t mark table as checked.

Repair options (When using ‘-r’ or ‘-o’):

  • -B, —backup Make a backup of the .MYD file as ‘filename-time.BAK’.
  • —correct-checksum Correct checksum information for table.
  • -e, —extend-check Try to recover every possible row from the data file. Normally this will also find a lot of garbage rows; Don’t use this option if you are not totally desperate.
  • -f, —force Overwrite old temporary files.
  • -r, —recover Can fix almost anything except unique keys that aren’t unique.
  • -n, —sort-recover Forces recovering with sorting even if the temporary file would be very big.
  • -p, —parallel-recover Uses the same technique as ‘-r’ and ‘-n’, but creates all the keys in parallel, in different threads.
  • -o, —safe-recover Uses old recovery method; Slower than ‘-r’ but can handle a couple of cases where ‘-r’ reports that it can’t fix the data file.
  • -q, —quick Faster repair by not modifying the data file. One can give a second ‘-q’ to force myisamchk to modify the original datafile in case of duplicate keys. NOTE: Tables where the data file is currupted can’t be fixed with this option.
  • -u, —unpack Unpack file packed with myisampack.

Other actions:

  • -a, —analyze Analyze distribution of keys. Will make some joins in MySQL faster. You can check the calculated distribution by using ‘—description —verbose table_name’.
  • -d, —description Prints some information about table.

Источник

3 ответа

Это ошибка, о которой уже сообщалось начиная с MySQL 5.6

Все еще происходит в 8.0.11, поэтому в то же время вы можете использовать решение walkarround.

Не использовать расширение MYI.

myisamchk  --force --update-state var/lib/mysql/zibarsho_karno/wp_yoast_seo_links

Jesus Uzcanga
12 июнь 2018, в 11:42

Поделиться

Как уже упоминал пользователь Jesus Uzcanga, это старая ошибка, которая еще не исправлена [текущая версия 8.0.15].

Эти команды являются обходным .MYI когда вы запускаете их непосредственно в каталоге, где .MYI файлы .MYI:

ls *.MYI | xargs basename -s .MYI | xargs myisamchk

Он удаляет расширение и запускает myisamchk для каждого файла данных MyISAM.

Al Bundy
05 март 2019, в 10:22

Поделиться

ls *.MYI | xargs basename -s .MYI | xargs -I{} myisamchk -r --force {}

Gatis Rumbens
16 май 2019, в 05:18

Поделиться

Ещё вопросы

  • 0Отображение изображения в браузере
  • 1Как утверждать, что путь выполнения не выполняется более одного раза в Java?
  • 1Удаление определенного пользователя из массива javascript
  • 0Jquery Dialog добавить пользовательский класс для кнопки
  • 1Установите pip Python
  • 1Таймер класс не работает
  • 1Как выполнить перенаправление HTTP на стороне сервера вместо мета-обновления
  • 0JQuery Автозаполнение проблемы
  • 1javascript: самый короткий код для поиска ключа объекта, соответствующего шаблону
  • 0Получить значение х дескриптора навигатора highstock при наведении мыши
  • 1Как использовать служебное свойство в маршруте?
  • 1Файл json не создается с помощью Python Scrapy Spider
  • 1Как сохранить изображение, загруженное через url, в базу данных sqlite в двоичном формате
  • 0проверка имени пользователя и пароля
  • 0Не могу получить доступ к запросу пароля из MySQL в Ubuntu
  • 0Изменение минимального и максимального значений нескольких ползунков JQueryUI на странице из Выбрать
  • 1Как создать пользовательскую функцию ошибки с данными
  • 0Mysql сравнить два номера списка
  • 0jquery SuperSize нужно перезагрузить страницу после воспроизведения слайдов
  • 0HTML-форма отправить в форму JavaScript
  • 1Проблема с видеоплеером Android
  • 1Struts2 возвращает json, если аутентификация в перехватчике не удалась
  • 1Разрезать ряды панд между двумя массивами
  • 1Захват вывода печати из нескольких потоков в Python
  • 1Попытка сохранить настройки компорта
  • 1Регулярное выражение C # всегда возвращает FALSE
  • 1Как добавить TabBar в Android
  • 0symfony2: вложенные множества с использованием RecursiveIteratorIterator
  • 1Многопоточность этого примера кода:
  • 0jQuery Получить значения из функции
  • 0Подтверждение на экране перед отправкой? PHP / SQL
  • 0Деструктор для хеш-таблицы с использованием цепочки
  • 0Как включить несколько файлов JS в зависимости от события onload или $ (document) .ready ()?
  • 0подключение к базе данных WAMP SQL с использованием объекта PHP
  • 1Как изменить фон MenuItem на MouseOver в WPF
  • 0Шаблоны PHP Regex получают 3 значения переменных из строки
  • 0Как распечатать или скачать отфильтрованный запрос?
  • 1Цикл по массиву
  • 0Php / json_encode NULL выпускает
  • 0Вызовите файл загрузки
  • 0Возврат пользователей с помощью PayPal Rest API
  • 1javax.net.ssl.SSLHandshakeException при подключении через Cajo через проблему SSL
  • 0Обработка другого часового пояса в MySQL
  • 0Использование REST API с PHP — Redmine
  • 0SQL-запрос выдает ошибку, но выглядит нормально
  • 1все значения в gridview
  • 0Как я могу установить встроенные стили CSS для элемента с JavaScript?
  • 0Обработка загрузки файла при изменении
  • 1Как получить доступ к значениям формы с именами переменных?

Like this post? Please share to your friends:
  • Myheritage произошла ошибка пожалуйста попытайтесь еще раз позже
  • My friend pedro blood bullets bananas has encountered an error and must close
  • Mysqldump got error 1556
  • Mysqldump got error 1049 unknown database mysqldump when selecting the database
  • Mxgp 2019 как изменить язык