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
    

如何解决?

更新:

我发现了两件事:

  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 回答