mysql:12779
From: "kyou tech" <"kyou tech" <kyou_tech@xxxxxxxxxx>>
Date: Mon, 20 Feb 2006 14:51:58 +0900
Subject: [mysql 12779] Re: Mysql JDBC接続時のサイズ制限
ご対応ありがとうございます。 >http://bugs.mysql.com/bug.php?id=17561 もっと柔軟なやり方はcreate databaseまたはcreate table時指定てきれば いいなと思ったけど、OSSに対して厳しく要求できません。 最低ソースをいじらなくてconfigureで済めば、いいと思います。 >/* The data size of record must be smaller than this because we reserve >two upmost bits in a two byte offset for special purposes */ > #define REC_MAX_DATA_SIZE (16 * 1024) >このように「2バイト-2bit分のoffsetにて管理している=14bit分」という説明があ ります。 >14bitで表現できる最大値 = 16KBですね。 これは拡張できなければちょっとまずいだと思います。業務アプリで100Kか1M超える row もたくさん出ていると思います。いちいちテーブル分割、項目統合するのは綺麗な設 計が出来なくて 開発工数も膨らむことになります。 これも要望として反映していただけますか。 でも今回はテーブル分割か項目の統合かをやらなければならないらしいですね(>.< ;) >From: Tetsuro IKEDA <tetsuro@xxxxxxxxxx> >Reply-To: ml@xxxxxxxxxx >To: ml@xxxxxxxxxx >Subject: [mysql 12778] Re: Mysql JDBC接続時のサイズ制限 >Date: Sun, 19 Feb 2006 13:43:55 -0800 > >池田です。 > >InnoDBのPageサイズを./configureオプションで変更できるようにして欲しい、 >という内容のFeature Requestを出しておきました。 > >http://bugs.mysql.com/bug.php?id=17561 > >どういう反応が返ってくるかは分かりませんが・・・。 > >Tetsuro IKEDA wrote: > > こんにちは。池田です。 > > > > 長文レス失礼します。 > > > > > >>一、 > >>text項目にそれぞれ50000Bytesに入れてテストしました。 > >>そうすると、c30まで登録できました。c31はで139がでました。 > >>ただ、マニュアルによると > >>「InnoDB stores the first 768 bytes of a VARCHAR, BLOB, or TEXT column > >>in the row, and the rest into separate pages. 」 > >>16K=16384/768=21.3333 > >>DBのmeta情報を考えるc21かc22で落ちるはずですが、c30までできたのはちょっ > >>と不 > >>思議です。 > > > > > > c30まで格納できるのは、お使いのMySQLのバージョンがMySQL 4.0.21であるため です。 > > > > ヘッダーファイル innobase/include/dict0mem.h を見ますと、MySQL 4.0.21で は、 > > > > #define DICT_MAX_COL_PREFIX_LEN 512 > > > > と定義されています。 > > > > 一方で、MySQL 5.0.18などでは、 > > > > /* DICT_MAX_INDEX_COL_LEN is measured in bytes and is the max index column > > length + 1. Starting from 4.1.6, we set it to < 3 * 256, so that one can > > create a column prefix index on 255 characters of a TEXT field also in the > > UTF-8 charset. In that charset, a character may take at most 3 bytes. */ > > > > #define DICT_MAX_INDEX_COL_LEN 768 > > > > と定義されています。この変更はMySQL 4.1.6に行われたもので、MySQL 4.1系に て > > 行われたマルチバイト文字コード対応に伴ったものです。 > > このコメントにはUTF-8で255文字入れた場合にもExtraDataを使わずに行えるよ うに > > してあるという説明がなされています。 > > > > 英語版マニュアルに書かれている「768バイト」というのはこのMySQL 4.1.6変更 後を > > 前提としているようです。 > > # http://dev.mysql.com/doc/refman/4.1/en/innodb-restrictions.html > > # http://dev.mysql.com/doc/refman/5.0/en/innodb-restrictions.html > > # http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html > > > > より古いマニュアルを探すと(公式ではないですが)、512バイトと書いてあり ます。 > > 何通か前のメールで私が512バイトといったのは、これがあったためです。 > > (MySQL 4.0.21をお使いとのことでしたので) > > http://linux.ouc.edu.cn/manual/APM/innodb/en/index.html#InnoDB_restrictions > > > > > >>二、 > >> > >> > >>>#define REC_MAX_DATA_SIZE (16 * 1024) > >> > >>を(32*1024)のように修正して32Kまでできないでしょうか。 > >> > >>何度もすみません。 > > > > > > innobase/include/rem0rec.hのREC_MAX_DATA_SIZEですが、 > > > > /* The data size of record must be smaller than this because we reserve > > two upmost bits in a two byte offset for special purposes */ > > #define REC_MAX_DATA_SIZE (16 * 1024) > > > > このように「2バイト-2bit分のoffsetにて管理している=14bit分」という説明 があります。 > > 14bitで表現できる最大値 = 16KBですね。 > > > > さらにここを修正するとなると、今のところちょっと私には自信がないです(^ ^; > > > > > >>三、 > >>このようなパラメーターの設定はconfigureのオプションまたは サーバ起動時 の > >>--defaults-fileの中にした方が便利かなと思っています。 > > > > > > Pageサイズを変えるとibdata1やib_logfile1などのファイルも作り変えなければ > > ならないでしょう。となると起動時に指定可能にするのは、ちょっとやりすぎか もと思います。 > > > > ただしconfigureオプションで指定可能というのはあって然るべきですね。 > > Feature Requestを出しておきますね。 > > > > #よく見るとInnoDBに関するconfigureオプションて、現状だとskip-innodbだけ ですよね。 > > > > ではでは。 > > > > kyou tech wrote: > > > >>返事遅くてすみません。 > >>こっちもUNIV_PAGE_SIZEを64Kに拡張して、コンパイルして > >>試しました。大体同じ結果を確認しました。 > >>一、 > >>text項目にそれぞれ50000Bytesに入れてテストしました。 > >>そうすると、c30まで登録できました。c31はで139がでました。 > >>ただ、マニュアルによると > >>「InnoDB stores the first 768 bytes of a VARCHAR, BLOB, or TEXT column > >>in the row, and the rest into separate pages. 」 > >>16K=16384/768=21.3333 > >>DBのmeta情報を考えるc21かc22で落ちるはずですが、c30までできたのはちょっ > >>と不 > >>思議です。 > >> > >>二、 > >> > >> > >>>#define REC_MAX_DATA_SIZE (16 * 1024) > >> > >>を(32*1024)のように修正して32Kまでできないでしょうか。 > >> > >>何度もすみません。 > >> > >> > >>三、 > >>このようなパラメーターの設定はconfigureのオプションまたは サーバ起動時 の > >>--defaults-fileの中にした方が便利かなと思っています。 > >> > >> > >> > >> > >> > >>>From: Tetsuro IKEDA <tetsuro@xxxxxxxxxx> > >>>Reply-To: ml@xxxxxxxxxx > >>>To: ml@xxxxxxxxxx > >>>Subject: [mysql 12775] Re: Mysql JDBC接続時のサイズ制限 > >>>Date: Sat, 18 Feb 2006 02:10:03 -0500 > >>> > >>>池田です。 > >>> > >>>InnoDBのPageサイズを大きくすることで1行辺りのデータサイズの制限を > >>>緩和する件ですが、仕組みを調べてみようとソースコードを読んでいましたと こ > >> > >>ろ、 > >> > >> > >>>以下のような記述を見つけました。 > >>> > >>>MySQL 4.0.21 innobase/include/rem0rec.h > >>> > >>>/* The data size of record must be smaller than this because we reserve > >>>two upmost bits in a two byte offset for special purposes */ > >>>#define REC_MAX_DATA_SIZE (16 * 1024) > >>> > >>>この定数なのですが、InnoDBが行サイズを計算するのに使用していると思われ る > >>>btr_cur_optimistic_insert関数(innobase/btr/btr0cur.c)にて使用されてい ま > >> > >>す。 > >> > >> > >>>この関数のロジックを読んでみると、どうもこの定数を超える場合には > >>>"Got error 139 from table handler"のエラー処理を行うように思えました。 > >>> > >>>つまりPageサイズを64KBまで拡張したとしても、1行辺りのデータサイズは 16KB > >>>までしか扱えないのではないかということです。 > >>> > >>>これを確かめるべく、Pageサイズを64KBに拡張したMySQL 4.0.21にて、以下の > >>>SQL文を実行してみましたところ、やはり16KBを超えたところで > >>>"Got error 139 from table handler"のエラーが返るようになりました。 > >>> > >>>create table t1 (c1 blob, c2 blob, c3 blob, c4 blob, c5 blob, c6 blob, c7 > >> > >>blob, c8 blob, > >> > >> > >>>c9 blob, c10 blob, c11 blob, c12 blob, c13 blob, c14 blob, c15 blob, c16 > >> > >>blob, c17 blob, > >> > >> > >>>c18 blob, c19 blob, c20 blob, c21 blob, c22 blob, c23 blob, c24 blob, c25 > >> > >>blob, c26 blob, > >> > >> > >>>c27 blob, c28 blob, c29 blob, c30 blob, c31 blob, c32 blob, c33 blob, c34 > >> > >>blob, c35 blob, > >> > >> > >>>c36 blob, c37 blob, c38 blob, c39 blob, c40 blob, c41 blob, c42 blob, c43 > >> > >>blob, c44 blob, > >> > >> > >>>c45 blob, c46 blob, c47 blob, c48 blob, c49 blob, c50 blob, c51 blob, c52 > >> > >>blob, c53 blob, > >> > >> > >>>c54 blob, c55 blob, c56 blob, c57 blob, c58 blob, c59 blob, c60 blob, c61 > >> > >>blob, c62 blob, > >> > >> > >>>c63 blob, c64 blob, c65 blob) type=innodb; > >>> > >>>insert into t1 set c1=repeat('A', 512); > >>> > >>>update t1 set c2=c1, c3=c1, c4=c1, c5=c1, c6=c1, c7=c1, c8=c1, c9=c1, > >> > >>c10=c1, c11=c1, > >> > >> > >>>c12=c1, c13=c1, c14=c1, c15=c1; > >>> > >>>まずこれで 512*15=7680バイトを格納します。 > >>> > >>>update t1 set c16=c1; > >>> > >>>これで8192バイトとなり、8000バイト超となりますがPageサイズが拡張されて > >>>いる > >> > >>ためエラーになり > >> > >> > >>>ません。 > >>> > >>>update t1 set c17=c1, c18=c1, c19=c1, c20=c1, c21=c1, c22=c1, c23=c1, > >> > >>c24=c1, c25=c1, > >> > >> > >>>c26=c1, c27=c1, c28=c1, c29=c1, c30=c1, c31=c1; > >>> > >>>さらにこれで合計 512*31=15872バイトを格納します。ここまではOKです。し > >>>かし、 > >> > >> > >>>update t1 set c32=c1; > >>>ERROR 1030: Got error 139 from table handler > >>> > >>>16KBに達したところでこのエラーとなってしまいました。 > >>>この新たに判明した16KB制限でありますが、現在のInnoDBの行構造を改造でも > >>>しない限り、増やすことは難しいと思います。 > >>> > >>>以上、ご参考まで。 > >>> > >>> > >>>Tetsuro IKEDA wrote: > >>> > >>>>池田です。こちらの手元のマシンで動作確認を完了しました。 > >>>> > >>>>innobase/include/univ.i ファイルを以下のように変更することで、 > >>>>何通か前に送ったメールではエラーとなっていたものを、 > >>>>エラー無しにUPDATEすることができました。 > >>>> > >>>> > >>>> > >>>>>64KBの場合、 > >>>>> > >>>>>UNIV_PAGE_SIZE = 8 * 8192 > >>>>>UNIV_PAGE_SIZE_SHIFT = 16 > >>>>> > >>>> > >>>> > >>>>【注意点】 > >>>>この変更を行うと、InnoDBのデータファイル、ログファイル、ログバッファ > >>> > >>>など > >> > >>の > >> > >> > >>>>設定値がデフォルトのままでは起動しなくなります。 > >>>>Pageサイズが4倍になっているので、その影響だと思われます。 > >>>> > >>>>例えば、以下のように十分な値を設定する必要があります。 > >>>> > >>>>--innodb_data_home_dir= > >>>>--innodb_data_file_path=/foobar/ibdata1:100M:autoextend > >>>>--innodb_log_file_size=50M > >>>>--innodb_buffer_pool_size=200M > >>>> > >>>>Tetsuro IKEDA wrote: > >>>> > >>>> > >>>>>池田@自己レスです。 > >>>>> > >>>>>ちゃんとコメント読め、という感じでした(^^; > >>>>> > >>>>>・UNIV_PAGE_SIZE には2の累乗を設定する > >>>>>・UNIV_PAGE_SIZE_SHIFT にはUNIV_PAGE_SIZEのその2の対数を設定する > >>>>> > >>>>>ということですね。 > >>>>> > >>>>>つまりPageサイズには48KBのようなサイズは指定できないということです ね。 > >>>>> > >>>>>64KBの場合、 > >>>>> > >>>>>UNIV_PAGE_SIZE = 8 * 8192 > >>>>>UNIV_PAGE_SIZE_SHIFT = 16 > >>>>> > >>>>>ということになるでしょうか。 > >>>>> > >>>>>Tetsuro IKEDA wrote: > >>>>> > >>>>> > >>>>> > >>>>>>池田です。 > >>>>>> > >>>>>>InnoDBのPageサイズを変えるためには、ソースファイルを直接編集した後 に、 > >>>>>>コンパイルする必要があるようです。 > >>>>>> > >>>>>>【変更対象】 > >>>>>>$MySQL/innobase/include/univ.i > >>>>>>・UNIV_PAGE_SIZE > >>>>>>・UNIV_PAGE_SIZE_SHIFT > >>>>>> > >>>>>>【参考】 > >>>>>>http://dev.mysql.com/doc/refman/4.1/en/innodb-restrictions.html > >>>>>> > >>>>>>例えばPageサイズを64KBにする場合、UNIV_PAGE_SIZEを"8 * 8192"に変える の > >> > >>は > >> > >> > >>>>>>良いとして、UNIV_PAGE_SIZE_SHIFTはどう変更するのがいいんでしょうか ね。 > >>>>>> > >>>>>>考え中・・・。もし分かったら教えてください(^^) > >>>>>> > >>>>>>kyou tech wrote: > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>だいぶ解ったような気がします。丁寧なご説明に感動しました。 > >>>>>>>mysqlの醍醐味も感じ始めています。 > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>2.コンパイルオプションを指定してInnoDBのPageサイズをデフォルトの > >> > >>16KBか > >> > >> > >>>>>>>ら、 > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>> もっと大きな値にする(最大で64KBまで指定可能)。 > >>>>>>>> (64KBにすることで制限は8KBから32KBに緩和される。) > >>>>>>> > >>>>>>>で試したいと思います。 > >>>>>>>ただ、configure --helpで見るとpage sizeのオプションがないようです が、 > >>>>>>>直接configureファイルを修正することになるでしょうか。 > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>From: Tetsuro IKEDA <tetsuro@xxxxxxxxxx> > >>>>>>>>Reply-To: ml@xxxxxxxxxx > >>>>>>>>To: ml@xxxxxxxxxx > >>>>>>>>Subject: [mysql 12769] Re: Mysql JDBC接続時のサイズ制限 > >>>>>>>>Date: Thu, 16 Feb 2006 22:04:00 -0500 > >>>>>>>> > >>>>>>>>池田@Connector/Jチームにてインターン中です。 > >>>>>>>> > >>>>>>>>まず確認したいのですが、使用しているストレージエンジンはInnoDBで宜 し > >> > >>いで > >> > >> > >>>>>>>しょうか? > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>さて、InnoDB前提で考えた場合、ちょっと説明が長くなりますが、以下私 の > >> > >>予 > >> > >> > >>>>>>>>想で > >>>>>>> > >>>>>>>す。 > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>【InnoDBにおける行サイズのデフォルトの最大値(約8000バイト)を超え > >>> > >>>たの > >> > >>が原 > >> > >> > >>>>>>>因】 > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>InnoDBはテーブルのデータを格納する領域であるTable Spaceを、デフォ > >>> > >>>ルト > >> > >>では > >> > >> > >>>>>>>16KB > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>(これはコンパイル時に指定されます)のPage単位に分割して管理してお > >>> > >>>り、 > >> > >> > >>>>>>>>それぞれのPage内に各行を"主キーでソートした状態"で格納しています。 > >>>>>>>>(InnoDBにおけるClustered Index) > >>>>>>>> > >>>>>>>>これに関連して、InnoDBでは各行の最大長はPageサイズの半分以下である こ > >>>>>>>>と、と > >>>>>>> > >>>>>>>いう > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>制限があります。デフォルトのPageサイズ16KBにおいては、8KBがこれに > >>> > >>>当た > >> > >>りま > >> > >> > >>>>>>>す。 > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>しかしInnoDBでは、InnoDBではTEXT(LONGTEXT)やBLOB(LONGBLOB)を使 用 > >> > >>する > >> > >> > >>>>>>>と、 > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>該当データをその行が可能されているPageの外に格納することができるた > >> > >>め、 > >> > >> > >>>>>>>>実際には最大4GBまでの行を格納することができます。 > >>>>>>>> > >>>>>>>>ただし、例えば以下のDDLがあり、 > >>>>>>>> > >>>>>>>>CREATE TABLE t1 (c1 TEXT) TYPE=InnoDB; > >>>>>>>> > >>>>>>>>以下のDMLが実行されたとすると、 > >>>>>>>> > >>>>>>>>INSERT INTO t1 SET c1 = REPEAT('A', 10000); > >>>>>>>> > >>>>>>>>行が格納されているPageにはカラムc1の先頭512バイトが格納され、 > >>>>>>>>Page外に格納されるのは、残りの10000-512=9488バイトとなります。 > >>>>>>>> > >>>>>>>>すなわち、この残りの9488バイトについては何も問題は無いのですが、 > >>>>>>>>先頭512バイト分については行が格納されているPage内に格納されるた め、 > >>>>>>>>例えばこのc1のようなカラムが複数存在する場合には、Page内に合計で > >>>>>>>>格納されるデータサイズが8000バイトを超えてしまい、今回生じているよ う > >> > >>な、 > >> > >> > >>>>>>>>Got error 139 from table handler > >>>>>>>> > >>>>>>>>というエラーがInnoDBから投げられてしまうということになります。 > >>>>>>>> > >>>>>>>>例えば以下のようなDDLおよびDMLを実行してみると分かりやすいでしょ う。 > >>>>>>>> > >>>>>>>>mysql> create table many_text(a text, b text, c text, d text, e > >> > >>text, f > >> > >> > >>>>>>>text, g > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>text, h text, i text, j text, k text, l text, m text, n text, o > >> > >>text, p > >> > >> > >>>>>>>text) > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>type=innodb; > >>>>>>>> > >>>>>>>>mysql> insert into many_text set a = repeat('.', 512); > >>>>>>>> > >>>>>>>>mysql> update many_text set > >>>>>>>>b=a,c=a,d=a,e=a,f=e,g=a,h=a,i=a,j=a,k=a,l=a,m=a,n=a,o=a; > >>>>>>>> > >>>>>>>>mysql> update many_text set > >>>>>>>>b=a,c=a,d=a,e=a,f=e,g=a,h=a,i=a,j=a,k=a,l=a,m=a,n=a,o=a,p=a; > >>>>>>>>ERROR 1030: Got error 139 from table handler > >>>>>>>> > >>>>>>>>となると、今回の問題の回避方法ですが、以下の2つのどちらかではない > >>> > >>>かと > >> > >> > >>>>>>>>思われ > >>>>>>> > >>>>>>>ます。 > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>1.DDLを変更して8000バイト以上のデータがPage内に入らないようにす > >>> > >>>る。 > >> > >> > >>>>>>>> 例:テーブルを分割する、行を統合するなど > >>>>>>>> > >>>>>>>>2.コンパイルオプションを指定してInnoDBのPageサイズをデフォルトの > >> > >>16KBか > >> > >> > >>>>>>>ら、 > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>> もっと大きな値にする(最大で64KBまで指定可能)。 > >>>>>>>> (64KBにすることで制限は8KBから32KBに緩和される。) > >>>>>>>> > >>>>>>>>以上です。 > >>>>>>>> > >>>>>>>>皆様、何か補足などありましたら宜しくお願いいたします。 > >>>>>>>> > >>>>>>>>kyou tech wrote: > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>>>池田さん > >>>>>>>>> > >>>>>>>>>ご返事ありがとうございます。 > >>>>>>>>>対象テーブルは130項目があって、50項目ぐらいはTEXT型です。 > >>>>>>>>>中でfull size10000Byte項目が一個、5000Byte、3000Byte項目が若干あ > >>> > >>>りま > >> > >> > >>>>>>>>す。 > >>>>>>> > >>>>>>> > >>>>>>>>>full sizeのレコード長は105KBぐらいです。 > >>>>>>>>>もともとMysqlのTextの上限は65535Byteと認識していますから、 > >>>>>>>>>個々のフィールドの制限違反よりは、 > >>>>>>>>>Mysql(4.0.21)の行のサイズに制限があるような感じしています。 > >>>>>>>>>本当にそうでしょうか。もしそうであれば、どこかの設定を修正するか > >>> > >>>(そ > >> > >>う > >> > >> > >>>>>>>>>願って > >>>>>>>>>います)、 > >>>>>>>>>まさかテーブル分割することになるでしょうか。 > >>>>>>>>>今回始めてMysqlを使うことで、無知な質問ばかりですみません。 > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>>From: Tetsuro IKEDA <tetsuro@xxxxxxxxxx> > >>>>>>>>>>Reply-To: ml@xxxxxxxxxx > >>>>>>>>>>To: ml@xxxxxxxxxx > >>>>>>>>>>Subject: [mysql 12767] Re: Mysql JDBC接続時のサイズ制限 > >>>>>>>>>>Date: Thu, 16 Feb 2006 07:07:24 -0500 > >>>>>>>>>> > >>>>>>>>>>池田です。 > >>>>>>>>>> > >>>>>>>>>>Connector/J(MySQL JDBC Type4 Driver)でStatementあるいはClient- > >>> > >>>Side > >> > >>の > >> > >> > >>>>>>>>>>PreparedStatementを使用する場合の送信可能なクエリの最大長は2GBで > >> > >>す。 > >> > >> > >>>>>>>>>>(普通はそれよりも先にJVMのHEAPサイズが事実上の制限になると思い ま > >> > >>す) > >> > >> > >>>>>>>>>>Connector/Jに限らず、MySQLの全ての種類のクライアントは16MBを超え る > >>>>>>>> > >>>>>>>>SQL文 > >>>>>>> > >>>>>>>に > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>>>ついては、複数のPacketに分割してサーバへ送信します。 > >>>>>>>>>>max_allowed_packetは20MBに設定しているということですので、 > >>>>>>>>>>これが原因ということも無いと思います。 > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>>>|java.sql.SQLException: Got error 139 from table handler > >>>>>>>>>> > >>>>>>>>>>こちらのエラーをPerrorで見るに、 > >>>>>>>>>> > >>>>>>>>>>D:\mysql\mysql-4.0.26-win32\bin>perror 139 > >>>>>>>>>>MySQL error: 139 = Too big row > >>>>>>>>>> > >>>>>>>>>>これはConnector/Jが作成したエラーではなく、 > >>>>>>>>>>サーバから"Too big row"というメッセージでエラーが返ってきたこと > >>> > >>>を意 > >> > >>味 > >> > >> > >>>>>>>>>>してい > >>>>>>>>> > >>>>>>>>>ます。 > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>>何か思い当たる節はありませんか? > >>>>>>>>>> > >>>>>>>>>>kyou tech wrote: > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>>>質問内容曖昧ですみません。 > >>>>>>>>>>>実は > >>>>>>>>>>>画面上の各項目をfull sizeで入力して登録すると > >>>>>>>>>>>下記のエラーが発生しています。 > >>>>>>>>>>>各項目を小さいサイズで入力するとうまく登録できます。 > >>>>>>>>>>>full sizeでのレコードの長さ:100KB > >>>>>>>>>>>一応mysql server(4.0.21) の > >>>>>>>>>>>max_allowed_packet > >>>>>>>>>>>max_heap_table_sizeをそれぞれ20MBと32MBに調整したが、 > >>>>>>>>>>>同じくエラーが出ていますので、 > >>>>>>>>>>>jdbcのクエリーの長さに制限があるかと思っています。 > >>>>>>>>>>>ご教授いただければ助かります。 > >>>>>>>>>>> > >>>>>>>>>>>|java.sql.SQLException: Got error 139 from table handler > >>>>>>>>>>>| at > >>>>>>> > >>>>>>>com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2921) > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>>>>| at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1570) > >>>>>>>>>>>| at > >> > >>com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665) > >> > >> > >>>>>>>>>>>| at > >> > >>com.mysql.jdbc.Connection.execSQL(Connection.java:2978) > >> > >> > >>>>>>>>>>>| at > >> > >>com.mysql.jdbc.Connection.execSQL(Connection.java:2902) > >> > >> > >>>>>>>>>>>| at > >>>>>>>>>>> > >>>>>>> > >>>>>>>com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>>>>va:930) > >>>>>>>>>>>| at > >>>>>>>>>>> > >>>>>>> > >>>>>>>com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>>>>:1159) > >>>>>>>>>>>| at > >>>>>>>>>>> > >>>>>>> > >>>>>>>com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>>>>:1076) > >>>>>>>>>>>| at > >>>>>>>>>>> > >>>>>>> > >>>>>>>com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>>>>:1061) > >>>>>>>>>>>| at > >>>>>>>>>>> > >>>>>>> > >>>>>>>org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdat > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>>>>e(Unknown Source) > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>>>| at > >>>>>>>>>>>> > >>>>>>> > >>>>>>>com.sony.framework.util.sqltemplate2.UpdateSQLCommand.runStatement(Up > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>>>>>dateSQLCommand.java:65) > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>>>From: Tetsuro IKEDA <tetsuro@xxxxxxxxxx> > >>>>>>>>>>>>Reply-To: ml@xxxxxxxxxx > >>>>>>>>>>>>To: ml@xxxxxxxxxx > >>>>>>>>>>>>Subject: [mysql 12765] Re: Mysql JDBC接続時のサイズ制限 > >>>>>>>>>>>>Date: Thu, 16 Feb 2006 05:43:19 -0500 > >>>>>>>>>>>> > >>>>>>>>>>>>こんにちは。池田です。 > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>>>Mysql JDBC接続時のサイズ制限(stateMentの長さ)がありますか。 > >>>>>>>>>>>>>もしあれば、どうやって調整(設定)しますでしょうか。 > >>>>>>>>>>>> > >>>>>>>>>>>>java.sql.Statementを使う場合にサーバに送信できるクエリの最大長 に > >>>>>>>> > >>>>>>>>つい > >>>>>>> > >>>>>>>て > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>>>の > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>>>>ご質問でしょうか? > >>>>>>>>>>>> > >>>>>>>>>>>>質問の意図をもう少し詳しく教えてください。 > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>>-- > >>>>>>>>>>>>Tetsuro Ikeda, Intern Development & Support > >>>>>>>>>>>>MySQL Inc, www.mysql.com > >>>>>>>>>>>>Office: +1-206-336-2030 Mobile: +1-206-661-4293 > >>>>>>>>>>>>Are you MySQL certified? www.mysql.com/certification > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>>_________________________________________________________________ > >>>>>>>>>>>迷惑メールやウイルスへの対策も万全「MSN Hotmail」 > >>>>>>>>>>>http://promotion.msn.co.jp/hotmail/ > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>>-- > >>>>>>>>>>Tetsuro Ikeda, Intern Development & Support > >>>>>>>>>>MySQL Inc, www.mysql.com > >>>>>>>>>>Office: +1-206-336-2030 Mobile: +1-206-661-4293 > >>>>>>>>>>Are you MySQL certified? www.mysql.com/certification > >>>>>>>>>> > >>>>>>>>> > >>>>>>>>>_________________________________________________________________ > >>>>>>>>>パソコンでも携帯電話でも使える 「MSN Hotmail」 > >>>>>>>>>http://promotion.msn.co.jp/hotmail/ > >>>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>>-- > >>>>>>>>Tetsuro Ikeda, Intern Development & Support > >>>>>>>>MySQL Inc, www.mysql.com > >>>>>>>>Office: +1-206-336-2030 Mobile: +1-206-661-4293 > >>>>>>>>Are you MySQL certified? www.mysql.com/certification > >>>>>>>> > >>>>>>> > >>>>>>>_________________________________________________________________ > >>>>>>>MSNショッピングでXbox360を早速チェック! > >>>>>>>http://shopping.msn.co.jp/softcontent/softcontent.aspx?scmId=593 > >>>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>> > >>> > >>>-- > >>>Tetsuro Ikeda, Intern Development & Support > >>>MySQL Inc, www.mysql.com > >>>Office: +1-206-336-2030 Mobile: +1-206-661-4293 > >>>Are you MySQL certified? www.mysql.com/certification > >>> > >> > >>_________________________________________________________________ > >>MSNショッピングでXbox360を早速チェック! > >>http://shopping.msn.co.jp/softcontent/softcontent.aspx?scmId=593 > >> > >> > > > > > > > > >-- >Tetsuro Ikeda, Intern Development & Support >MySQL Inc, www.mysql.com >Office: +1-206-336-2030 Mobile: +1-206-661-4293 >Are you MySQL certified? www.mysql.com/certification > _________________________________________________________________ MSNショッピングでXbox360を早速チェック! http://shopping.msn.co.jp/softcontent/softcontent.aspx?scmId=593
12763 2006-02-16 13:49 ["Matsunobu, Yoshinor] Re: MySQL のバックアップ・復元について 12764 2006-02-16 17:24 ┣["kyou tech" <kyou_te] Mysql JDBC接続時のサイズ制限 12765 2006-02-16 19:43 ┃┗[Tetsuro IKEDA <tetsu] 12766 2006-02-16 20:18 ┃ ┗["kyou tech" <kyou_te] 12767 2006-02-16 21:07 ┃ ┗[Tetsuro IKEDA <tetsu] 12768 2006-02-17 10:37 ┃ ┗["kyou tech" <kyou_te] 12769 2006-02-17 12:04 ┃ ┗[Tetsuro IKEDA <tetsu] 12770 2006-02-17 14:32 ┃ ┗["kyou tech" <kyou_te] 12771 2006-02-17 15:02 ┃ ┗[Tetsuro IKEDA <tetsu] 12772 2006-02-17 15:15 ┃ ┗[Tetsuro IKEDA <tetsu] 12773 2006-02-17 16:42 ┃ ┗[Tetsuro IKEDA <tetsu] 12775 2006-02-18 16:10 ┃ ┗[Tetsuro IKEDA <tetsu] 12776 2006-02-19 21:08 ┃ ┗["kyou tech" <kyou_te] 12777 2006-02-20 04:06 ┃ ┗[Tetsuro IKEDA <tetsu] 12778 2006-02-20 06:43 ┃ ┗[Tetsuro IKEDA <tetsu] -> 12779 2006-02-20 14:51 ┃ ┗["kyou tech" <kyou_te] 12780 2006-02-20 15:01 ┃ ┗[Tetsuro IKEDA <tetsu] 12781 2006-02-20 15:37 ┃ ┗["kyou tech" <kyou_te] 12782 2006-02-20 15:45 ┃ ┗[Tetsuro IKEDA <tetsu] 12774 2006-02-17 17:59 ┗[baya <bayapbayap@xxx]