在一个SQL查询中,PHP可以插入的最大数量是多少?

5
我有一个相当简单的问题。我正在一次性向MySQL表中插入许多记录。它可以处理大约2000条记录(实际上还要多一点)。但是,如果我想插入3000条记录,它就什么也不做。
我通过AS3发送一个包含所有记录的数组,通过AMFPHP将其发送到一个简单的PHP脚本来解析和插入该数组。
这是正常现象吗?还是我需要调查一下?
目前,我正在将我的数组分成2000条记录的部分,并发送几个AMFPHP请求,而不是只发送一个。
4个回答

11

PHP的查询受到“max_allowed_packet”配置选项的限制。它定义了查询字符串的绝对长度限制,以字符为单位。请注意,这不仅仅是插入数据的总大小,而是整个查询字符串。包括SQL命令、标点符号、空格等。

检查您的3000记录版本与2000记录版本的长度,并获取服务器数据包长度限制:

SHOW VARIABLES WHERE Variable_name LIKE  '%max_allowed_packet%'

如果你的包含 3000 条记录的版本超过了这个限制,查询肯定会失败,因为它会在中间某个地方被截断。


谢谢!还要感谢其他评论。我不知道这个,所以感谢提供信息。 - Sten Van den Bergh
它显示16777216。这是指字节、KB还是字符长度? - RN Kushwaha

3
我认为一个查询中插入的数量并没有真正的限制,相反,你能够发送到MySQL的查询的大小是有限制的。请参见以下链接:
所以,基本上这取决于每个insert中的数据量大小。

2

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接