mysql:2113
From: Tomohiro Takahashi <Tomohiro Takahashi <t_takahashi@xxxxxxxxxx>>
Date: Wed, 24 May 2000 22:29:23 +0900
Subject: [mysql 02113] Re: about MySQL JDBC Driver
Shin-ichi Tsurunaga wrote: > > <略> > > > ところで、私が修正した gwe JDBC Driver ですが、MEDIUMBLOBなどのカラム > >に巨大なデータを格納しようと試みました。しかし、600000バイト程度のバイナ > ........ > 試してみました。確かに下記のエラーを吐きます。ちょっと長いですが書いてお > きます。(サーバーの該当カラムはちゃんとLONGBLOBで宣言されています。) > > java.lang.IllegalArgumentException: Packet is larger than max_allowed_packet from server > configuration of 1048576 bytes > at org.gjt.mm.mysql.Buffer.ensureCapacity(Buffer.java, Compiled Code) > at org.gjt.mm.mysql.Buffer.writeBytesNoNull(Buffer.java:421) > > Buffer.javaを少し覗いてみます。 高橋(智)です。 なるほど、確かに「1048576バイト」より大きいパケットを送ると、サーバーは ヘッダを受けとった直後ぐらいにソケットを切断するようですね。 私のソースの実装では、バイナリデータを UPDATE ... SET BINDATA=0x00010203... といように 16進表記で 送り出していたので、525000バイトのデータ程度でパケット の最大長を越えていました。 マニュアルには、 「例えば、 BLOB 型の許容範囲いっぱいのデータをテーブルに入れる場合、 --set-variable=max_allowed_packet=24M オプションを指定してサーバー を起動する必要があります。」 とありますが、クライアントから送りだすパケットのサイズは、ヘッダの構造上、 16Mを越えることが出来ないと思うのですが、どうなのでしょうか...。 -- 高橋智宏
2096 2000-05-23 22:00 [Tomohiro Takahashi <] about MySQL JDBC Driver 2105 2000-05-24 15:58 ┗[Shin-ichi Tsurunaga ] 2108 2000-05-24 18:16 ┣[Tomohiro KATO <tomop] 2112 2000-05-24 21:10 ┃┗[Shin-ichi Tsurunaga ] 2110 2000-05-24 19:49 ┗[Tomohiro Takahashi <] 2111 2000-05-24 20:32 ┗[Shin-ichi Tsurunaga ] -> 2113 2000-05-24 22:29 ┗[Tomohiro Takahashi <] 2114 2000-05-24 23:52 ┗[Tomohiro Takahashi <] 2116 2000-05-25 12:15 ┗[Shin-ichi Tsurunaga ]