mysql #1017 — Can’t find file: ‘xxx’ (errno: 2)

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

mysqlcheck --analyze --all-databases --auto-repair -uroot -p
.....
base.fff     OK
.....
base.vvv     OK
Error    : Can't find file: 'xxx' (errno: 2)
status   : Operation failed
base.zzz     OK

Идем в /var/lib/mysql/нужная_база/ и смотрим наличие файлов таблицы, на которую ругается mysql.
Всего для каждой таблицы MyISAM создается 3 файла с расширениями: .frm .MYI .MYD
В папке оказался только файл xxx.frm, 2х других нет.

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

CREATE TABLE `xxx1` ( ..... ) ENGINE=MyISAM DEFAULT CHARSET=... ;
INSERT INTO `xxx1` VALUES ( ..... ) ;

Затем из /var/lib/mysql/нужная_база/ копируем 2 недостающих файла таблиц xxx1.MYD xxx1.MYI в файлы xxx.MYD xxx.MYI
Перезагружаем mysql и в phpmyadmin во вкладке SQL выполняем запрос:

REPAIR TABLE `xxx`;
# repair status OK

Все гуд!

Если же бекапа нет или он старый и необходимые таблицы были созданы после создания бекапа:
создаем 2 пустых файла xxx.MYD и xxx.MYI, выставляем владельца mysql:mysql и права на них 0660.
Далее в phpmyadmin во вкладке SQL выполняем запрос:

REPAIR TABLE `xxx` USE_FRM ;
# repair status OK

Недостающие файлы пересоздадутся, но информация будет утеряна.

Скажите свое мнение

ваш email не публикуется. обязательно *

;-) :yawn: :whew: :toivo: :tmi: :time: :thinking: :talking: :sweating: :swear: :sun: :star: :smoke: :smirk: :sleepy: :skype: :shock: :shake: :rofl: :rain: :punch: :puke: :poolparty: :pizza: :phone: :party: :oops: :nod: :no: :ninja: :neutral: :nerd: :music: :muscle: :mrgreen: :movie: :mooning: :mmm: :middlefinger: :makeup: :mail: :mad: :lol: :lipssealed: :kiss: :itwashtme: :inlove: :idea: :hi: :heidy: :heart: :headbang: :happy: :handshake: :giggle: :fubar: :flower: :evilgrin: :emo: :dull: :drunk: :drink: :doh: :devil: :dance: :cry: :cool: :coffie: :clapping: :cash: :call: :cake: :bug: :brokenheart: :bow: :blush: :beer: :bear: :bandit: :arrow: :angry: :angel: :^) :???: :?: :-| :-o :-P :-D :-) :-( :!:

 

*

code

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.