2

次のMySQL(バージョン5.1)テーブル(InnoDB)があります:

Username varchar(50)  
Sequence int(11)  
FileType varchar(10)  
Photo longblob -- here
PhotoSize int(11)  
Timestamp datetime

byte [] 96.7KBを挿入しようとすると、次のエラーで失敗します。

行1の列「写真」に対してデータが長すぎます

挿入byte[](サイズ37.2KB)は正常に機能します。転換点が何なのかわかりません。

私はそれをグーグルで検索し、多くの人がそれをBLOBからLONGBLOBに変更することであると言いました。これはうまくいきませんでした。他の人は、Max_Allowed_Packetを16M(my.iniファイル内)に変更すると問題が解決すると述べました。これもうまくいきませんでした。

誰か助けてもらえますか?

4

2 に答える 2

3

それらが「できる」としても、データベースはバイナリファイルをストックするようには作られていません。サーバー上のファイルのパスをテーブルに含める方が効率的です。

于 2010-10-25T08:00:28.663 に答える
2

LONGBLOB

最大長が4,294,967,295または4GB(232 – 1)バイトのBLOB列。LONGBLOB列の有効な最大長は、クライアント/サーバープロトコルで構成されている最大パケットサイズと使用可能なメモリによって異なります。各LONGBLOB値は、値のバイト数を示す4バイト長のプレフィックスを使用して格納されます。

正しいmy.iniファイルを編集したことを確認しますか?ロードされた構成値をチェックインしましたか?phpMyAdminを使用している場合は、[変数]タブに移動し、[最大許容パケット数]の値を確認します。デフォルトは16,777,216で、1,000,000,000のようになります。

于 2010-10-25T08:55:33.067 に答える