Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在抛出超时的php循环中更新多行504_Php_Sql_Phpmyadmin - Fatal编程技术网

如何在抛出超时的php循环中更新多行504

如何在抛出超时的php循环中更新多行504,php,sql,phpmyadmin,Php,Sql,Phpmyadmin,我正在尝试将客户迁移到新的数据库结构 我编写了一个PHP脚本,它循环遍历每个记录,并确定该客户在数据库中是否有重复项。如果出现多次,我将更新链接到该客户的所有其他表,并将其链接的customerID更新为该客户的最新版本 我所面临的问题是,通过在浏览器中加载migrate.php来运行该脚本需要很长时间,因此即使我运行以“a”开头的客户名称查询,运行该脚本时也会超时504。然后更改为“B”并运行脚本,然后更改为“C”并运行脚本等。。。(不管怎样,这都要花很长时间) 所以我的问题是:我如何在mig

我正在尝试将客户迁移到新的数据库结构

我编写了一个PHP脚本,它循环遍历每个记录,并确定该客户在数据库中是否有重复项。如果出现多次,我将更新链接到该客户的所有其他表,并将其链接的customerID更新为该客户的最新版本

我所面临的问题是,通过在浏览器中加载migrate.php来运行该脚本需要很长时间,因此即使我运行以“a”开头的客户名称查询,运行该脚本时也会超时504。然后更改为“B”并运行脚本,然后更改为“C”并运行脚本等。。。(不管怎样,这都要花很长时间)

所以我的问题是:我如何在migrate.PHP页面的PHP循环中运行大约120000个更新查询并避免504超时(当前设置为5min),或者通过打印查询并通过PHPMyAdmin运行它们

我已打印出(片段):

但这仍然会杀死PHPMyAdmin并返回一个错误


在PHPMyAdmin中是否可以使用这个大的更新列表来运行脚本(可能是成批运行)?

UPDATE

最后,我对引用它的每个表中的customerID进行了索引,我用更新查询运行了我的原始脚本,它在大约5秒钟内完成了这项工作

无需插入,然后复制数据


因此,对于存在相同问题的任何人,请尝试为表中的某些列编制索引,以便脚本可以快速引用这些列。

也许可以添加一列
IsMigrated TINYINT(1)DEFAULT 0
,然后在提交后将该列更新为1。重复此操作,直到所有记录都迁移了column=1
BEGIN;
UPDATE renewal_reminder SET renewalid='49884' WHERE renewalid='43239';
UPDATE renewal_note SET renewalid='49884' WHERE renewalid='43239';
UPDATE renewal_request SET renewalid='49884' WHERE renewalid='43239';
UPDATE renewal_timeline SET renewalid='49884' WHERE renewalid='43239';
COMMIT;