0

ユーザーがファイルをレコードに添付できるスクリプトがあります。ファイルは (データベースではなく) 個別に保存されます。ユーザーがファイルを添付せずに「レコードの保存」をクリックすると、正常に機能します。ユーザーがファイルを添付すると、次の手順が実行されます。

  1. ファイルのアップロードは正しい
  2. スクリプトは Idiorm を使用して DB レコードの詳細から取得します
  3. スクリプトはレコードのフィールド「filesize」を更新します (この手順なしでスクリプトをテストしました - 同じ結果)
  4. スクリプトがレコードを保存しようとすると、次のようになります。

    PDOException
    
    Code: HY000
    
    Message: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
    
    File: /home/../includes/idiorm.php
    
    Line: 1675
    

どうすれば解決できますか?

アップデート:

私は2つのことを知りました:

  1. スクリプトは、アップロードされたファイルが 20 Mb を超え、Idiorm_record->save() でデータベースを更新しようとした場合にのみ、「一般エラー: 2006 MySQL サーバーがなくなりました」を返します。
  2. アップロードされたファイルが 20 Mb を超えていて、データベースを更新しようとしていない場合、スクリプトは「一般エラー: 2006 MySQL サーバーが消えました」を返しません。
  3. 20 Mb を超えるファイルをアップロードし、Idiorm::raw_exec() を使用して Idiorm_record->save() によって生成されたクエリを実行し、エラーをキャッチできません。

その問題は Idiorm に関連しているということですか?

4

1 に答える 1

0

問題は、MySQL の「待機タイムアウト」設定でした。しかし、プレーンな sql が正常に動作し、Idiorm オブジェクトの save メソッドを介して更新すると、Mysql がなくなるという遅延が発生する理由は興味深いです。

于 2013-09-26T10:09:35.870 に答える