Проблема с таблицами MYD

Вопросы по UTM 3.0 и UTM 4.0 (поддержка прекращена)
Закрыто
sacros
Сообщения: 3
Зарегистрирован: Пт май 27, 2005 15:42

Проблема с таблицами MYD

Сообщение sacros »

Повредились таблицы MYD, как их восстановить?

Восстановление с помощью myisamchk -r * не помогает, таблицы MYI проверяет нормально, а на MYD ругается: "doesn`t have a correct index definition. You need to recreate it before you can do a repair."

На некоторые MYD ругается так: "myisamchk: error: -1 when opening MyISAM-table "/..../....../xxx.MYD"

Как исправить сей хаос?

(FreeBSD 4.7, NetUP UTM 4.0 [1 +update 24 sep 2003], MySQL 3.23.48.)

spec
Сообщения: 371
Зарегистрирован: Сб апр 16, 2005 14:03

Сообщение spec »

Можно попробовать в консоли mysql:
mysql> check table table_name;

sacros
Сообщения: 3
Зарегистрирован: Пт май 27, 2005 15:42

Сообщение sacros »

spec писал(а):Можно попробовать в консоли mysql:
mysql> check table table_name;
попробовал, ничего не происходит

sacros
Сообщения: 3
Зарегистрирован: Пт май 27, 2005 15:42

Сообщение sacros »

наконец в консоли mysql одну из таблиц MYD удалось проверить, но тут пишет, что все ок, а через myisamchk все равно ругается на нее

SV
NetUP Team
Сообщения: 81
Зарегистрирован: Вт янв 25, 2005 10:04

Сообщение SV »

myisamchk и не должен проверять файлы *.MYD, он проверяет только *.MYI

Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

Сообщение dalex »

doesn`t have a correct index definition. You need to recreate it before you can do a repair."
надо удалить индексы и пересоздать заново.
http://dev.mysql.com/doc/mysql/ru/create-index.html

rdv
Сообщения: 3
Зарегистрирован: Чт мар 03, 2005 15:03

Сообщение rdv »

а подскажите как удалить и создать индексы например для таблицы discount_history.MYI.
заранее спасибо!

rdv
Сообщения: 3
Зарегистрирован: Чт мар 03, 2005 15:03

Сообщение rdv »

починил.
вообщем сначала так

Stage 3: Difficult repair

You should reach this stage only if the first 16KB block in the index file is destroyed or contains incorrect information, or if the index file is missing. In this case, it's necessary to create a new index file. Do so as follows:

1. Move the data file to some safe place.
2. Use the table description file to create new (empty) data and index files:
shell> mysql db_name
mysql> SET AUTOCOMMIT=1;
mysql> TRUNCATE TABLE tbl_name;
mysql> quit

If your version of MySQL doesn't have TRUNCATE TABLE, use DELETE FROM tbl_name instead.
3. Copy the old data file back onto the newly created data file. (Don't just move the old file back onto the new file; you want to retain a copy in case something goes wrong.)

потом так

mysql>
CHECK TABLE table_name;
REPAIR TABLE table_name;

Закрыто