MySql事务锁定超时(1205),当插入到两个主键上有外键的数据库时

MySql事务锁定超时(1205),当插入到两个主键上有外键的数据库时,mysql,pdo,transactions,timeout,mysql-error-1205,Mysql,Pdo,Transactions,Timeout,Mysql Error 1205,我在mysql中有两个数据库使用innoDB运行,第二个数据库的外键与第一个数据库的主键相关 在我的代码中,我需要在第一个数据库中插入,并获取该数据库的id,然后插入到第二个数据库中 一切进展顺利,除非我启动事务,并锁定新ID的第一个DB,而第二个DB无法插入该ID,我将获得 SQLSTATE[HY000]:一般错误:超过1205锁等待超时;尝试重新启动事务。当我删除外键时,它就会正常工作 我需要提到的是,我使用PHP PDO连接到MySql,我创建了到每个DB的单独连接,我也不能提交第一个DB

我在mysql中有两个数据库使用innoDB运行,第二个数据库的外键与第一个数据库的主键相关

在我的代码中,我需要在第一个数据库中插入,并获取该数据库的id,然后插入到第二个数据库中

一切进展顺利,除非我启动事务,并锁定新ID的第一个DB,而第二个DB无法插入该ID,我将获得
SQLSTATE[HY000]:一般错误:超过1205锁等待超时;尝试重新启动事务
。当我删除外键时,它就会正常工作

我需要提到的是,我使用PHP PDO连接到MySql,我创建了到每个DB的单独连接,我也不能提交第一个DB事务,所以第二个DB事务会通过,因为我需要确保所有dbs的所有事务在整个过程中都正常,然后开始提交它们


感谢Ramin,似乎唯一的解决方案是提交第一个DB并在第二个DB上启动事务,或者删除DBs之间的外键

请给出解决方案,如果你看到更好的一个,我会接受作为答案,在未来任何时候


谢谢Ramin

尝试使用不带锁的查询谢谢,但是我如何防止其他用户修改我尚未完成处理的行?这是一个要求…我也发现了这一点,但它并没有解决问题,因为我需要与DB有单独的连接。好的,事务的一点是,两个单独的连接不会相互干扰,所以MySQL可以按预期工作。我要看的第一件事是,如果您真的需要两个连接,通常情况下并非如此,因为您可以通过一个连接同时访问两个数据库,即使在一个查询中也是如此(因为外键在内部也会这样做)。但是如果没有更多信息(例如,为什么需要两个连接),就很难找到解决方案。我想一个想法是在一台服务器上的存储过程中插入两个表(然后从一个连接访问两个服务器)。1) 这是未来扩展到两个不同服务器的可能性的一部分吗2)我在行级别使用事务锁,并在所有过程结束时提交每个连接,但除了有两个或一个到DBs的连接之外,除非我先将连接提交到第一个数据库,然后再提交到第二个数据库,否则会发生此错误,但在此过程中,我需要在最后确认所有连接。