Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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中完成之前返回MySQL删除_Php_Mysql_Database_Innodb - Fatal编程技术网

在php中完成之前返回MySQL删除

在php中完成之前返回MySQL删除,php,mysql,database,innodb,Php,Mysql,Database,Innodb,小结:我的“delete”语句似乎在完成删除之前返回。你怎么能等到它完成呢 长版本:我有一个针对innoDB MySQL表运行的PHP脚本,该表从数据库中删除一组记录。比如: 从term='15/FA'的部分删除 然后,我使用一组insert语句进行后续操作 问题是,当先前的删除完成并清除我插入的一些新记录时,我的代码将部分插入我的新记录。那太糟糕了 如果我在调用delete后调用'sleep()'一秒钟,一切都会正常运行。显然,这不是一个合适或可靠的解决方案,但它确实表明存在时间问题 与我刚才

小结:我的“delete”语句似乎在完成删除之前返回。你怎么能等到它完成呢

长版本:我有一个针对innoDB MySQL表运行的PHP脚本,该表从数据库中删除一组记录。比如:

从term='15/FA'的部分删除

然后,我使用一组insert语句进行后续操作

问题是,当先前的删除完成并清除我插入的一些新记录时,我的代码将部分插入我的新记录。那太糟糕了

如果我在调用delete后调用'sleep()'一秒钟,一切都会正常运行。显然,这不是一个合适或可靠的解决方案,但它确实表明存在时间问题

与我刚才删除的记录相比,可能有更多、更少或不同的记录。用“更新”代替“插入”是行不通的

我使用从insert返回的自动增量id将更多记录插入到子表中。因此,在一个长脚本中完成整个删除和插入操作是不现实的。(如果是,我也不知道怎么做。)


那么,有没有办法知道“删除”功能何时完成?或者我需要放弃并切换到真正的数据库吗?

当表中有大量行时,可能会发生这种情况,因此查询确实需要一段时间。您可以尝试在要在删除查询中筛选的列上添加索引。

在删除行之前,
delete
不会返回。请详细描述使您认为发生这种情况的步骤

您有InnoDB标签,所以我假设您正在使用InnoDB?是否涉及多个连接?
术语是否已编制索引?您正在使用BEGIN…COMMIT吗?事务是否已回滚

如果所有这些情况都发生了,那么可能会出现问题:

  • 您有两个独立的连接——一个是DELETE
  • 事务隔离模式是
    READ\u UNCOMMITTED
    或类似的模式
  • 第二个连接在
    DELETE
    提交之前开始查找记录
  • 您没有检查错误

您是否尝试在MySQL中使用事务?请发布一些代码,以便我们能够实际帮助您一些代码helpful@Jay谢谢从现在开始我会小心的。