まとまりのないブログ

something which something is something

mysql

Incorrect key file for table ‘./my/table.MYI’; try to repair it

投稿日:

MySQLのテーブルが壊れた。Incorrect keyとかCorruptとかエラーメッセージが出たのでrepairテーブルとかmyisamchkとか色々修復するべく試したがどうやっても直ってくれない。直ることは直るがデータをinsertしようとしたらまたエラーが出てその繰り返し。インデックスのキー位置と実際にテーブルに存在しているレコード数が一致していないのが原因の模様。実際にselect count(*) とかやって見た件数と修復時に表示される件数との間に差が生じているのを確認した。最後の手段として、

  1. show create table targetTable でテーブル定義をメモ
  2. 対象のテーブルデータを select * into outfile ‘/tmp/data.txt’ from targetTable として出力する。
  3. drop table targetTable としてテーブル削除
  4. create table targetTable (略 としてテーブルを再作成
  5. load data infile ‘/tmp/data.txt’ into table targetTable としてデータを流し込む

という手順でやってみて、流石にこれでもエラーが出るようならお手上げだと思っていたがなんとか復旧した。

-mysql

執筆者:


comment

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

no image

古いMySQLをインストールした時にlibncursesw.so.5がないと怒られた

MySQL5.087をインストールしてデーモン起動してログインしようとしたら # ./bin/mysql -u mysql ./bin/mysql: error while loading share …

no image

インデックス列には日本語よりも英数字を使うほうが良いのか悪いのか

テーブル内に存在するレコード数をカウントする時、where句にインデックス列を条件として指定して実行時間がどれほどかかるかテストをしてみた。テーブルの全レコード数は約1600万レコードで、カウントすべ …

no image

failure:Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)

failure:Cannot create PoolableConnectionFactory (Could not create connection to database server. Att …

no image

myisamchkの修復時に作成されるTMDファイル

テーブルの修復をしようとしたらtempfileが作成できないという下記のエラーが発生した。

no image

ECC機能付きメモリとECC機能付きではないメモリの違い

メモリには様々な規格があるが、ECC機能が有るか無いかという違いもある。メモリのECC機能とは簡単に言うとデータのエラーをチェック・修正をする機能のことで、サーバなどの稼動に信頼性が求められるマシンに …