0

MySQLデータベースに、画像をバイト配列として格納する列があります。

行を更新して新しい画像を挿入しようとしています。新しいイメージは163Kであり、byte []に​​変換すると、配列内の要素の数は167092になります。更新を行うストアドプロシージャを実行すると、「データが列に対して長すぎます」というエラーが発生します。 '行1にあります。変換時に8844byte[]要素を持つ既存のイメージがデータベースにすでにあります。

列のデータ型はLONG​​BLOBです。私の理解では、appox4Gbを使用する必要があります。

my.iniファイルを更新してMAX_ALLOWED_PACKETS=16Mにしようとしましたが、100Mも試しました。

MySQL .NETコネクタライブラリを使用して、ストアドプロシージャを実行しています。

誰かがこの問題を修正する方法について何かアイデアがありますか?画像をデータベースに直接保存する代わりに、画像パスを保存できることはわかっています。しかし、アプローチを変更する前に、現在の問題を解決し、画像をデータベースに保存する方法を知りたいと思います。

4

1 に答える 1

1

私はまったく同じ問題を抱えていました...

私の場合、動的 SQL を作成するためにストアド プロシージャ内で CONCAT を使用したかったので、TEXT パラメータを介して LONGBLOB を渡していました。

解決策は、単純に TEXT を LONGTEXT に変更することでした。それだけです:)それを理解するのに本当に時間がかかりました...

3年近く経ってもお役に立てれば幸いです。

于 2012-12-07T18:08:10.277 に答える