在php中完成之前返回MySQL删除
小结:我的“delete”语句似乎在完成删除之前返回。你怎么能等到它完成呢 长版本:我有一个针对innoDB MySQL表运行的PHP脚本,该表从数据库中删除一组记录。比如:在php中完成之前返回MySQL删除,php,mysql,database,innodb,Php,Mysql,Database,Innodb,小结:我的“delete”语句似乎在完成删除之前返回。你怎么能等到它完成呢 长版本:我有一个针对innoDB MySQL表运行的PHP脚本,该表从数据库中删除一组记录。比如: 从term='15/FA'的部分删除 然后,我使用一组insert语句进行后续操作 问题是,当先前的删除完成并清除我插入的一些新记录时,我的代码将部分插入我的新记录。那太糟糕了 如果我在调用delete后调用'sleep()'一秒钟,一切都会正常运行。显然,这不是一个合适或可靠的解决方案,但它确实表明存在时间问题 与我刚才
从term='15/FA'的部分删除
然后,我使用一组insert语句进行后续操作
问题是,当先前的删除完成并清除我插入的一些新记录时,我的代码将部分插入我的新记录。那太糟糕了
如果我在调用delete后调用'sleep()'一秒钟,一切都会正常运行。显然,这不是一个合适或可靠的解决方案,但它确实表明存在时间问题
与我刚才删除的记录相比,可能有更多、更少或不同的记录。用“更新”代替“插入”是行不通的
我使用从insert返回的自动增量id将更多记录插入到子表中。因此,在一个长脚本中完成整个删除和插入操作是不现实的。(如果是,我也不知道怎么做。)
那么,有没有办法知道“删除”功能何时完成?或者我需要放弃并切换到真正的数据库吗?当表中有大量行时,可能会发生这种情况,因此查询确实需要一段时间。您可以尝试在要在删除查询中筛选的列上添加索引。在删除行之前,
delete
不会返回。请详细描述使您认为发生这种情况的步骤
您有InnoDB标签,所以我假设您正在使用InnoDB?是否涉及多个连接?术语是否已编制索引?您正在使用BEGIN…COMMIT吗?事务是否已回滚
如果所有这些情况都发生了,那么可能会出现问题:
- 您有两个独立的连接——一个是DELETE
- 事务隔离模式是
READ\u UNCOMMITTED
或类似的模式
- 第二个连接在
DELETE
提交之前开始查找记录
- 您没有检查错误
您是否尝试在MySQL中使用事务?请发布一些代码,以便我们能够实际帮助您一些代码helpful@Jay谢谢从现在开始我会小心的。