2

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

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

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

4

3 回答 3

5

您可能违反了max_allowed_packet设置。有关更多数据,请参见此处

引用,

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

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

此外,如果您可以命名您使用的特定数据库接口类(PDO?mysql_?mysqli_?),那就太好了,因为不同的类以不同的方式处理错误。它也可以根本不处理超大数据包的情况。

PS:你真的应该检查你的日志,看看你遇到的具体错误。首先要寻找的地方是/var/log/mysql/error.log(可能因您的环境而异)

更新: mysql_error()返回"MySQL server has gone away"

从错误的手册页中:“如果您向服务器发送不正确或太大的查询,您也可能会收到这些错误。如果 mysqld 收到的数据包太大或无序,它假定某些东西已经消失客户端出错并关闭连接。如果您需要大查询(例如,如果您正在处理大 BLOB 列),您可以通过设置服务器的 max_allowed_pa​​cket 变量来增加查询限制,该变量的默认值为 1MB。您可能还需要增加客户端的最大数据包大小..."

(引用@Colin Morelli 提供)

于 2013-07-08T09:45:59.910 回答
0

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

set_time_limit(0);
ini_set('memory_limit', '-1');
于 2013-07-08T09:29:03.607 回答
0

编辑:
如果这不是我们都急于回答的内存分配问题,那么它可能是内存引擎的花絮,所以你可以检查一下,

评论:
根据我的经验,这很可能是内存问题,因为它仅在您尝试更大的导入
时发生(当我尝试从单个查询返回 20MB 结果集时发生在我的应用程序中)

于 2013-07-08T09:51:06.413 回答