【发布时间】:2014-12-02 04:27:42
【问题描述】:
我正在尝试使用 DBAL 连接查询功能在 mysql 中执行“SELECT FOR UPDATE”查询。
我在一个 symfony 项目中,我做了以下测试:
我的控制器中有这两个功能:
/**
* @Route("test", name="test")
*/
public function testAction()
{
$em = $this->getDoctrine()->getManager();
$em->getConnection()->beginTransaction();
try {
$sql = "SELECT *
FROM CommandeDel
WHERE IDCommande = 2 FOR UPDATE";
$m = $em->getConnection()->query($sql)->fetch();
sleep(20);
$em->getConnection()->commit();
}
catch (\Exception $e) {
$em->getConnection()->rollback();
throw $e;
}
return new Response(json_encode($m));
}
/**
* @Route("test2", name="test2")
*/
public function test2Action()
{
$em = $this->getDoctrine()->getManager();
$em->getConnection()->beginTransaction();
$sql = "SELECT *
FROM CommandeDel
WHERE IDCommande = 2";
$m = $em->getConnection()->query($sql)->fetch();
$em->getConnection()->commit();
}
catch (\Exception $e) {
$em->getConnection()->rollback();
throw $e;
}
return new Response(json_encode($m));
}
我在浏览器中调用第一个 url (test),然后在另一个选项卡中立即调用第二个 (test2)。
我的问题是第二个立即返回答案而无需等待 20 秒的延迟...
有人看出我哪里错了吗?
谢谢。
【问题讨论】:
标签: mysql doctrine locking dbal