我已经关注了这个问题:Data Limit on MySQL DB Insert我无法用有限的信息解决这个问题。 我正在使用WAMP。 我有许多Rich Text编辑器和4个图像,这些图像通过POST请求发送到另一个页面。在某个阈值限制之后,查询失败。有办法吗?
编辑:在显示查询字符串时,似乎我能够检索通过POST发送的每一位数据。我很确定它与数据库有关。 图像存储为BLOB。
编辑#2:错误显示是“MySQL服务器已经消失”。
答案 0 :(得分:5)
您可能违反了max_allowed_packet
设置。有关更多数据,请参阅here。
报价,
如果您使用的是mysql客户端程序,则默认使用 max_allowed_packet变量是16MB。
如果您要上传未压缩的图片,则此值很容易到达。
此外,如果您可以命名您使用的特定数据库接口类(PDO?mysql_?mysqli _?),那将会很棒,因为不同的类会以不同的方式处理错误。它根本不能处理过大的数据包情况。
P.S。:你应该检查你的日志,看看你遇到的具体错误。首先要查找的是/var/log/mysql/error.log
(根据您的环境而有所不同)
<强>更新强>
mysql_error()
已返回"MySQL server has gone away"
从错误的手册页中:“如果是,您还可以获取这些错误 您向服务器发送不正确或太大的查询。如果 假设mysqld接收的数据包太大或无序 客户端出了问题并关闭了 连接。如果您需要大量查询(例如,如果您正在工作 使用大BLOB列),您可以通过设置来增加查询限制 服务器的max_allowed_packet变量,其默认值为 1MB。您可能还需要增加最大数据包大小 客户端......“
(@Colin Morelli提供)
答案 1 :(得分:0)
有时,如果上传的文件太大,php往往会达到内存限制。根据您的配置,这可能会有所帮助:
set_time_limit(0);
ini_set('memory_limit', '-1');
答案 2 :(得分:0)
编辑:
如果不是内存分配的话我们都赶紧回答
然后它可能是一个内存引擎花絮,所以你可以检查,
注释:
根据我的经验,它很可能是一个记忆问题,因为它只会在你尝试更大的进口时出现
(当我尝试从单个查询返回20MB结果集时,发生在我的应用程序中)