ユーザーがファイルをレコードに添付できるスクリプトがあります。ファイルは (データベースではなく) 個別に保存されます。ユーザーがファイルを添付せずに「レコードの保存」をクリックすると、正常に機能します。ユーザーがファイルを添付すると、次の手順が実行されます。
- ファイルのアップロードは正しい
- スクリプトは Idiorm を使用して DB レコードの詳細から取得します
- スクリプトはレコードのフィールド「filesize」を更新します (この手順なしでスクリプトをテストしました - 同じ結果)
スクリプトがレコードを保存しようとすると、次のようになります。
PDOException Code: HY000 Message: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away File: /home/../includes/idiorm.php Line: 1675
どうすれば解決できますか?
アップデート:
私は2つのことを知りました:
- スクリプトは、アップロードされたファイルが 20 Mb を超え、Idiorm_record->save() でデータベースを更新しようとした場合にのみ、「一般エラー: 2006 MySQL サーバーがなくなりました」を返します。
- アップロードされたファイルが 20 Mb を超えていて、データベースを更新しようとしていない場合、スクリプトは「一般エラー: 2006 MySQL サーバーが消えました」を返しません。
- 20 Mb を超えるファイルをアップロードし、Idiorm::raw_exec() を使用して Idiorm_record->save() によって生成されたクエリを実行し、エラーをキャッチできません。
その問題は Idiorm に関連しているということですか?