我有一个脚本,用户可以在其中将文件附加到记录。文件单独存储(不在数据库中(。当用户不附加文件并单击"保存记录"时,它可以正常工作。当用户附加文件时,它会执行后续步骤:
- 文件上传正确
- 脚本使用 Idiorm 从数据库记录详细信息中获取 脚本
- 更新记录上的字段"文件大小"(我在没有此步骤的情况下测试了脚本 - 相同的结果(
脚本尝试保存记录,我得到这个:
PDOException Code: HY000 Message: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away File: /home/../includes/idiorm.php Line: 1675
如何解决?
更新:
我发现了两件事:
- 脚本仅在上传的文件大于 20 Mb 并且我尝试使用 Idiorm_record->save(( 更新数据库时返回"一般错误:2006 MySQL 服务器已消失"。
- 当上传的文件大于 20 Mb 并且我不尝试更新数据库时,脚本不会返回"一般错误:2006 MySQL 服务器已消失"。
- 我可以上传大于 20 Mb 的文件并使用 Idiorm::raw_exec(( 运行 Idiorm_record->save(( 生成的查询,并且没有捕获任何错误。
这是否意味着与成语有关的问题?
问题是MySQL中的"等待超时"设置。但是仍然很有趣,为什么普通sql工作正常并通过Idiorm对象上的保存方法进行更新会导致Mysql消失的延迟。