当数据变大时,MySQL插入查询失败

时间:2013-07-08 09:24:14

标签: php mysql

我已经关注了这个问题:Data Limit on MySQL DB Insert我无法用有限的信息解决这个问题。 我正在使用WAMP。 我有许多Rich Text编辑器和4个图像,这些图像通过POST请求发送到另一个页面。在某个阈值限制之后,查询失败。有办法吗?

编辑:在显示查询字符串时,似乎我能够检索通过POST发送的每一位数据。我很确定它与数据库有关。 图像存储为BLOB。

编辑#2:错误显示是“MySQL服务器已经消失”。

3 个答案:

答案 0 :(得分:5)

您可能违反了max_allowed_packet设置。有关更多数据,请参阅here

报价,

  

如果您使用的是mysql客户端程序,则默认使用   max_allowed_pa​​cket变量是16MB。

如果您要上传未压缩的图片,则此值很容易到达。

此外,如果您可以命名您使用的特定数据库接口类(PDO?mysql_?mysqli _?),那将会很棒,因为不同的类会以不同的方式处理错误。它根本不能处理过大的数据包情况。

P.S。:你应该检查你的日志,看看你遇到的具体错误。首先要查找的是/var/log/mysql/error.log(根据您的环境而有所不同)

<强>更新 mysql_error()已返回"MySQL server has gone away"

  

从错误的手册页中:“如果是,您还可以获取这些错误   您向服务器发送不正确或太大的查询。如果   假设mysqld接收的数据包太大或无序   客户端出了问题并关闭了   连接。如果您需要大量查询(例如,如果您正在工作   使用大BLOB列),您可以通过设置来增加查询限制   服务器的max_allowed_pa​​cket变量,其默认值为   1MB。您可能还需要增加最大数据包大小   客户端......“

(@Colin Morelli提供)

答案 1 :(得分:0)

有时,如果上传的文件太大,php往往会达到内存限制。根据您的配置,这可能会有所帮助:

set_time_limit(0);
ini_set('memory_limit', '-1');

答案 2 :(得分:0)

编辑:
如果不是内存分配的话我们都赶紧回答 然后它可能是一个内存引擎花絮,所以你可以检查,

注释:
根据我的经验,它很可能是一个记忆问题,因为它只会在你尝试更大的进口时出现 (当我尝试从单个查询返回20MB结果集时,发生在我的应用程序中)