2

私はすでに質問に従っています:MySQL DB Insertのデータ制限私は限られた情報でそれを解決できませんでした。WAMPを使用しています。多数のリッチ テキスト エディターと、POST 要求によって別のページに送信される 4 つの画像があります。特定のしきい値制限を超えると、クエリは失敗します。回避策はありますか?

編集:クエリ文字列を表示している間、POST 経由で送信されたすべてのデータを取得できるようです。DB関連であることは間違いありません。画像は BLOB として保存されています。

編集 #2: エラー表示は「MySQL server has gone away」です。

4

3 に答える 3

5

設定に違反している可能性がありmax_allowed_packetます。詳細なデータについては、こちらを参照してください。

見積もり、

mysql クライアント プログラムを使用している場合、デフォルトの max_allowed_pa​​cket 変数は 16MB です。

圧縮されていない画像をアップロードする場合、この値はかなり簡単に到達できます。

また、使用する特定のデータベース インターフェイス クラス (PDO? mysql_? mysqli_?) に名前を付けることができれば、すばらしいことです。クラスによってエラーの処理方法が異なるからです。特大のパケットの状況をまったく処理できない可能性もあります.

PS: 発生した特定のエラーのログを実際に確認する必要があります。最初に探す場所は/var/log/mysql/error.log(環境によって異なる場合があります)

更新: mysql_error()返されました"MySQL server has gone away"

エラーのマニュアルページから:「サーバーにクエリを送信した場合、これらのエラーが発生する可能性がありますが、これは正しくないか、大きすぎます。mysqld が大きすぎるか、順序が正しくないパケットを受信した場合、何かが発生したと見なされます。大きなクエリが必要な場合 (たとえば、大きな BLOB 列を操作している場合)、サーバーの max_allowed_pa​​cket 変数を設定することで、クエリの制限を増やすことができます。この変数のデフォルト値は 1MB です。また、クライアント側で最大パケット サイズを増やす必要がある場合もあります...」

(@Colin Morelli の厚意による引用)

于 2013-07-08T09:45:59.910 に答える
0

アップロードされたファイルが大きすぎると、php がメモリ制限に達する傾向があります。設定によっては、これが役立つ場合があります。

set_time_limit(0);
ini_set('memory_limit', '-1');
于 2013-07-08T09:29:03.607 に答える
0

編集:
私たちが急いで答えたメモリ割り当ての問題でない場合は、メモリエンジンのヒントである可能性があるため、おそらくそれを確認できます。

コメント:
私の経験では、メモリの問題である可能性が最も高いです。これは、より大きなインポートを試行した場合にのみ発生するためです
(単一のクエリから 20 MB の結果セットを返そうとすると、アプリケーションで発生します)。

于 2013-07-08T09:51:06.413 に答える