【发布时间】:2017-10-03 22:26:54
【问题描述】:
我有一个 foreach 循环,它遍历 MySQL 数据库中的一组表名,然后执行 mysqli 查询以重新索引表。
查询和循环似乎都可以正常工作,但是在一定数量的表之后,查询停止工作。
如果我只是简单地回显每个表名,那么它将显示所有这些表,因此我知道它不会在循环中丢失表,并且我可以看到前几个表正在正确地重新索引。它似乎在大约 50 张桌子后停止工作。
这是循环:
foreach($tables as $table) {
mysqli_multi_query($connect, "SET @newid=0; UPDATE $table SET ID=(@newid:=@newid+1) ORDER BY ID;");
}
什么可能导致它停止工作,mysql 超时或中断操作,因为如此多的查询正在快速连续运行?还有什么?
使用 mysqli_error 我得到:
命令不同步;你现在不能运行这个命令
【问题讨论】:
-
“停止工作”是什么意思?你有错误吗?
-
没有错误,但在数组后面的表中,ID 不会重置为 1、2、3 等。它们会保持在 1、2、5、8
-
@brain99 我已经用一条错误消息更新了我的帖子
-
这两个资源可能会让您对如何进行此操作有不同的想法,而不是使用多个查询语句。 MySQL Manual - Rebuilding or Repairing Tables or Indexes 和 how to reindex mysql table。希望对您有所帮助。