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

mysql:10526

From: 原田誠 <原田誠 <makoto@xxxxxxxxxx>>
Date: Sat, 27 Nov 2004 18:21:32 +0800
Subject: [mysql 10526] Re: MySQL-4.1.xのInnoDBで、大きなレコードがINSERTできない

原田です。情報ありがとうございます。

> 行の最大長は、BLOBとTEXTコラムを除いて、データベースページの半分より少し
> 短い。すなわち、行の最大長はおよそ8000バイトである。
> LONGBLOB及びLONGTEXTカラムは4GBより短くなければならず、BLOB及びTEXTカラ
> ムを含んだ行の長さの合計は4GBより短くなければならない。
> ---
> 
> ということのようです。
> 
> 制限事項としてマニュアルに明記しているくらいなんで、すぐには修正されない
> ような気がします。
> 要は8000bytesを超えるならBLOBかTEXTを使えということではないでしょうか。

CHAR(1000)などは、TEXTに変換されるので、TEXTでも8000byteの制限が起こって
いるようです。(カラム数が11個以上の場合)

mysql> create table a( b char(777) ) type=innodb;
mysql> desc a;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| b     | text | YES  |     | NULL    |       |
+-------+------+------+-----+---------+-------+
1 row in set (0.03 sec)



もしかしたら、CHAR(1000)ではなく(明示的に)TEXTにしたら起こらなくなるか
も・・・4.1.6では同様のエラーが起こるが、4.0.16ではエラーが起きないで正
常に働きました。
4.0.16から4.1.6までの間に、エンバグしたのでしょうか。


4.0.16の時点では、明示的にTEXTを指定しないと
mysql> create table a( b char(777) ) type=innodb;
ERROR 1074 (00000): Too big column length for column 'b' (max = 255). Use BLOB instead
と言われますね。逆にTEXTを明示的に指定することで、8000byteの制限もクリア
されるようです。


TEXTを明示的に使う+4.1.xでは気まぐれな8000byteの制限に気をつける+5.0.0
では修正されてる模様、という感じですね。

マニュアルの制限とは別物として、バグトラックに投稿したほうがよいでしょう
か?


> ちょっと気になることとしては、
> http://dev.mysql.com/doc/mysql/ja/InnoDB_restrictions.html
> に日本語マニュアルを見ると、
> 
> ---
> InnoDB の 3.23.40 以下のバージョンでは、レコードの最大長がデータベース
> ページの半分よりもやや小さい。ソースリリース 3.23.41 より、BLOB および 
> TEXT カラムを 4 GB 未満にすることが可能となった。レコードの合計の長さも 
> 4 GB 未満でなければならない。
> ---
> 
> とあります。
> 
> 訳が古いのだと思いますが、バージョンの言及があり、読むと3.23.41以降でこ
> の8000bytesの制約がなくなっていたバージョンがあったかのように取れます。
> 
> どうなんでしょう。
> 
> 

-- 
原田誠 <makoto@xxxxxxxxxx>


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

   @ 10516 2004-11-26 20:09 [原田誠 <makoto@xxxxx] MySQL-4.1.xのInnoDBで、大きなレコードがINSERTできない
     10517 2004-11-26 20:33 ┗["佐野 大輔" <d-sano@]                                       
     10518 2004-11-26 21:33  ┣[原田誠 <makoto@xxxxx]                                     
     10519 2004-11-27 01:34  ┗[George Akimoto <geor]                                     
->   10526 2004-11-27 19:21   ┗[原田誠 <makoto@xxxxx]