Jov*_*vic 5 php mysql transactions symfony doctrine-orm
这件事昨晚发生在我身上.我对错误的本质非常熟悉,但我仍然无法弄清楚可能导致错误的原因.我可能有预感,但我不确定.我将从一些基本应用程序的信息开始:
我的应用程序有3个实体:Loan,SystemPage和TextPage.每当有人添加贷款时,都会向数据库添加一个或多个系统页面.基本上,它是这样的:
if ( $form->isValid()){
$this->em->getConnection()->beginTransation();
$this->em->persist($loan);
$this->em->flush();
while ($someCondition){
$page = new SystemPage();
//... Fill the necessary data into page
$page->setObject($loan);
$this->em->persist($page);
}
$this->em->flush();
$this->em->getConnection()->commit();
}
Run Code Online (Sandbox Code Playgroud)
请忽略潜在的拼写错误,我通过记忆来写字面
实体Loan映射到表loans并SystemPage映射(通过继承映射)到system_pages和base_pages.后两者都有id设置为的字段AUTO_INCREMENT.
我的预感:还有另一张桌子叫做text_pages.鉴于text_pages和base_pages一方面和system_pages与base_pages另一个共享的ID,我想,这很容易导致此:
User1: Create BasePage, acquire autoincrement ID (value = 1)
User2: Create BasePage, acquire autoincrement ID (value = 1)
User1: Create TextPage, use the ID from step 1
User2: Create SystemPage, use the ID from step 2
Run Code Online (Sandbox Code Playgroud)
这个理论有两个问题:
重要提示:等待一分钟后,重新提交确认.
这可能是一些奇怪的MySQL事务隔离错误吗?任何提示都将不胜感激......
DB Schema的一部分:
请忽略塞尔维亚语的列名
| 归档时间: |
|
| 查看次数: |
549 次 |
| 最近记录: |