php - 插入最多仅添加 1000 条记录并忽略此后的所有记录

标签 php mysql insert limit records

我有一个大型数据库,客户端在其中存储个人消息并发送电子邮件通知[如果用户允许]。某些用户可以选择向其整个 friend 网络发送消息。一些用户在他们的网络中有超过 5000 个 friend ,因此如果他们选择整个网络,他们将向超过 5000 个 friend 发送消息,系统会将所有消息存储到一个表中。问题是它不会插入超过 1000 条记录,并忽略前 1000 条之后的所有插入。我增加了数据包大小,bulk_insert_buffer_size,但仍然没有运气。由于系统将一些信息存储在另一个用于报告的表中,因此每次插入都会返回其新的消息 ID。因此,我无法使用“插入表(列1,列2)值(值1,值2),(值1,值2)....等”。

表引擎是innodb,mysql版本是5.1.3,托管在amazon web服务上。我想要的只是解决一次插入超过 1000 条记录的问题。如前所述,它工作正常,但最多只能处理 1000 条记录,并且会忽略此后的所有记录。

我正在使用 php foreach(){} 为每个 friend 插入消息,如果电子邮件可用,则向用户发送通知。此 foreach(){} 还会在另一个表中插入相同的记录[只有 3 列]以生成报告。

最佳答案

您是否尝试过将查询拆分为更多子查询?也许在单个事务中(因为你使用 InnoDB)?

我不确定 Amazon 是否限制每个查询的插入数量,但一旦他们不限制 SQL 查询的数量,您就可以执行更多 INSERT 并且应该能够修复。

顺便问一下,您确定明文查询插入了全部 5000 个元素吗?您的代码是否会返回最多 1000 行的明文查询?我认为您在读取数据时执行的 SELECT 查询中是否有任何 LIMIT 语句?

关于php - 插入最多仅添加 1000 条记录并忽略此后的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4580127/

相关文章:

php - 哪一个使用 : Expire Header, Last Modified Header 或 ETags

mysql - 使用组总和的 SQL View ,并根据订单中的商品数量拆分运费

c - 用链表实现的任意索引处的序列插入

php - 注册表检查两个密码是否匹配

php - 反序列化()[函数。反序列化] : Error at offset 49151 of 49151 bytes

php - 如何使用PHP获取图像的长宽比?

mysql - 如何在 Rails 中连接没有主键的表?

php - Laravel 4 - 获取通过关系连接的表的交叉结果

Mysql创建触发器抛出错误

php - 插入 MySQL 时的撇号问题