Mysql 由于内部别名,无法锁定表

Mysql 由于内部别名,无法锁定表,mysql,doctrine,locking,aliases,Mysql,Doctrine,Locking,Aliases,我正在尝试执行以下代码: $em->getConnection()->exec('LOCK TABLES Portfolio t0 WRITE, User u1_ READ); $portfolio = $this->doctrine->getRepository('Portfolio')->findOneBy(array('user'=>$user->getId(), 'game'=>$game->getId())); $assets =

我正在尝试执行以下代码:

$em->getConnection()->exec('LOCK TABLES Portfolio t0 WRITE, User u1_ READ);
$portfolio = $this->doctrine->getRepository('Portfolio')->findOneBy(array('user'=>$user->getId(), 'game'=>$game->getId()));
$assets = $this->doctrine->getRepository('Asset')->findBy(array('portfolio' => $portfolio, 'isActive' => 1));
$em->getConnection()->exec('UNLOCK TABLES;');
所以当我执行这段代码时,我有一个错误:

执行“从资产t0中选择t0.id作为id1”时发生异常 SQLSTATE[HY000]:一般错误:1100表“t0”未使用锁表锁定

在问这个问题之前,我必须解释一下

  • 要进行锁定,我们必须使用条令内部别名(t0,u1_…),因为条令查询findBy,findOneBy最终使用这些别名
  • 在MySql中,当我们锁定时,必须锁定lock和UNLOCK语句中查询的所有表
  • 我得到上述错误是因为我没有在lock语句中锁定别名为t0的表资产
  • 我不能用别名t0锁定表资产,因为我已经有一个别名t0用于表资产组合
  • 所以问题是,我能强迫条令使用一个特定的内部别名吗