【问题标题】:Change database connection inside a transaction using PDO使用 PDO 更改事务中的数据库连接
【发布时间】:2014-07-11 08:51:49
【问题描述】:

我想在事务中更改数据库并进行插入。这可能吗?

这是我的代码

$db->beginTransaction();
try {

-----some code here-----

(Insert db1.table1);

(update db1.table2)

$db_new = new PDO (...);

$db_new->query("insert db2.table statement"); 

$db->commit();
} catch (Exception $e) {
 $db->rollBack();
}

我做得对吗?但我得到一个错误 Lock wait timeout exceeded;尝试重启交易

为什么会发生这种情况我做错了什么??

【问题讨论】:

  • 您是否插入到您正在更新的同一个表中?为什么不使用相同的连接/事务?
  • $db_new 连接已建立以插入另一个数据库
  • 我可以在事务@JoachimIsaksson 中创建一个新的 PDO 实例
  • 你应该可以毫无问题地做到这一点,听起来你可能有一个活动的事务锁定 db2.table。
  • no db2.table 不在任何事务中

标签: php pdo transactions


【解决方案1】:

一般来说 - 是的。您可以在交易打开时运行任何您想要的代码,只要此代码与该交易无关。

您只应注意,在您的事务打开时运行任何不相关的代码是没有意义的 - 您可以稍后再运行它。

至于您收到的错误 - 它是由其他问题引起的。事务显然是基于连接的,在一个连接中打开的事务永远不会受到任何其他连接的影响。

【讨论】:

  • 但是当我评论该更新声明时,它对我来说很好。为什么会这样?
猜你喜欢
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 2015-01-16
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
相关资源
最近更新 更多