[前][次][番号順一覧][スレッド一覧]

mysql:11888

From: SUGIMURA Takashi 杉村 貴士 <SUGIMURA Takashi 杉村 貴士 <sugimura@xxxxxxxxxx>>
Date: Fri, 05 Aug 2005 11:03:06 +0900 (JST)
Subject: [mysql 11888] Re: REPAIR TABLE でのエラーについて

杉村です。

> Not enough memory for blob at [sort_param->start_recpos] (need [block_info.rec_len])
> 
> というメッセージは、そのバッファへのメモリ確保に失敗したときに出力されるようです。
> ですから、REPAIR TABLE 命令発行後のメモリ状況や MySQL の設定を調査すれば何かわかるかも知れません。
> 

調べてはいるのですが、どの設定が影響するのかを全部追いきれずにいます。
OS 的には十分すぎるほど空いていますので、my.cnf を疑っています。


> また、次の要素からも何かヒントを得られるかも知れません。
> (http://dev.mysql.com/doc/mysql/ja/repair-table.html より)
> 

このページやその周辺を見まして、不要な INDEX の削除まではできました。

[DB 停止状態で myisamchk -e -i]

# myisamchk -e -i XXXXXXXXXXXXXX
Checking MyISAM file: XXXXXXXXXXXXXX
Data records:    3413   Deleted blocks:       0
myisamchk: warning: Table is marked as crashed and last repair failed
- check file-size
myisamchk: warning: Size of indexfile is: 1499136       Should be: 171008
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
myisamchk: error: Found 3414 keys of 3413
- check data record references index: 2
myisamchk: error: Found 3414 keys of 3413
- check data record references index: 3
myisamchk: error: Found 3414 keys of 3413
- check records and index references
myisamchk: error: Record at:   32577612  Can't find key for index:  1
MyISAM-table 'LOG_PACKETDATA' is corrupted
Fix it using switch "-r" or "-o"

User time 0.23, System time 0.21
Maximum resident set size 72032, Integral resident set size 9203888
Non-physical pagefaults 17884, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 0, Involuntary context switches 46


[チェックしてエラーがあったので修復]

svsadev# myisamchk --safe-recover XXXXXXXXXXXXXX
- recovering (with keycache) MyISAM-table 'XXXXXXXXXXXXXX'
Data records: 3413
Data records: 30138


[MySQL再起動、目的のINDEXを削除]

mysql> drop index IX_XXXXXXXXXXXXXXXX ON XXXXXXXXXXXXXX;
Query OK, 30138 rows affected (20.94 sec)
Records: 30138  Duplicates: 0  Warnings: 0


[しかし別な INDEX を作成しようとするとエラー]

mysql> CREATE INDEX IX_XXXXXXXXXXXXXXXX ON XXXXXXXXXXXXXX (A, B);
ERROR 1030 (HY000): Got error 12 from storage engine

% perror 12
OS error code  12:  Cannot allocate memory


どのメモリが足りなかったのかがわかるともう少々追いやすいのですが、
なかなか難しいところです。


> 残念ながら私が力になれるのはこの辺りまでのようです・・・。
> 

いえいえ。ありがとうございます。

---
杉村 貴士 <sugimura@xxxxxxxxxx>
GnuPG fingerprint: C81B 9835 1C9E BD9B 84BF  9785 0B91 D08B F667 DCED

[前][次][番号順一覧][スレッド一覧]

     11880 2005-08-04 17:54 [SUGIMURA Takashi 杉�] REPAIR TABLE でのエラーについて         
     11885 2005-08-05 10:05 ┣["T.Sasaki" <papasan2]                                       
->   11888 2005-08-05 11:03 ┃┗[SUGIMURA Takashi 杉�]                                     
     11891 2005-08-05 12:44 ┃ ┣["T.Sasaki" <papasan2]                                   
     11892 2005-08-05 12:44 ┃ ┗[とみたまさひろ <tomm]                                   
     11893 2005-08-05 12:55 ┃  ┗[SUGIMURA Takashi 杉�]                                 
     11895 2005-08-05 14:04 ┗[<takeshi@xxxxxxxxxx>]