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

mysql:11885

From: "T.Sasaki" <"T.Sasaki" <papasan2000@xxxxxxxxxx>>
Date: 5 Aug 2005 10:05:41 +0900
Subject: [mysql 11885] Re: REPAIR TABLE でのエラーについて

佐々木です。こんにちは。
MyISAM の動的テーブルを復旧した経験が無いので情報提供だけ・・・。

BLOB 型のフィールドを含んでいる場合、MyISAM のデフォルトである
静的テーブルではなく、動的テーブルが採用されます。
動的テーブルからレコードを取得するには、レコード毎にレコードヘッダから
レコードサイズを読み出して、バッファへメモリを割り当てる処理が行われます。

Not enough memory for blob at [sort_param->start_recpos] (need [block_info.rec_len])

というメッセージは、そのバッファへのメモリ確保に失敗したときに出力されるようです。
ですから、REPAIR TABLE 命令発行後のメモリ状況や MySQL の設定を調査すれば何かわかるかも知れません。

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

・MySQL 4.1.1 以降、デフォルトで REPAIR TABLE コマンドはバイナリログに書き込まれる。
・REPAIR TABLE ではまだ myisamchk のすべてのオプションをカバーしていない。

REPAIR TABLE や myisamchk のオプションに有効な手段が隠れている可能性もありますね。
残念ながら私が力になれるのはこの辺りまでのようです・・・。


"SUGIMURA Takashi 杉村 貴士" <sugimura@xxxxxxxxxx> wrote:
> 杉村です。こんにちは。
> 
> まず、環境は次の通りです。
> 
> FreeBSD 5.3-SECURITY
> Pentium 4 2.8GHz / 1GB RAM / 250GB HDD
> MySQL 4.1.11
> 
> REPAIR TABLE 文でエラーが出たときに、どう対処すべきなのかについて
> 悩んでいます。このテーブルは MyISAM です。
> 
> --------------------------------------------------------------
> mysql> REPAIR TABLE XXXXXXXXXXX \G;
> *************************** 1. row ***************************
>    Table: xxxxxxxxx.XXXXXXXXXXX
>       Op: repair
> Msg_type: error
> Msg_text: Not enough memory for blob at 5154540 (need 2603799)
> *************************** 2. row ***************************
>    Table: xxxxxxxxx.XXXXXXXXXXX
>       Op: repair
> Msg_type: status
> Msg_text: Operation failed
> 2 rows in set (0.84 sec)
> 
> ERROR:
> No query specified
> 
> --------------------------------------------------------------
> 
> MySQL を落として myisamchk -o すれば復旧はしますが、
> DROP INDEX や CREATE INDEX が効かず、実質的にあまり使えません。
> 
> これだけの状況ではよく伝わらないかもしれませんが、
> 何かやれることがありましたら教えてください。
> 
> Oracle Certified Professional (Gold 9i) は持ってますので、
> Oracle の復旧手順は一応理解しています。MySQL にはまだあまり慣れていません。
> 
> よろしくおねがいします。
> 
> ---
> 杉村 貴士 <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>]