Doctrine orm Doctrine2迁移为外键重命名索引

Doctrine orm Doctrine2迁移为外键重命名索引,doctrine-orm,doctrine,migration,Doctrine Orm,Doctrine,Migration,我在doctrine:migrations:diff中重命名索引时遇到问题。每次运行此命令时,doctrine都会创建sql查询以重命名数据库中的现有索引。有没有办法防止这种行为 详细说明: 我们在Oracle上有大的(大约200个表)旧数据库。约束和索引有命名约定,例如: 我们有表RANDOM\u KEY和USER,从RANDOM\u KEY到USER的外键(多对一),因此coinstraint有名称FK\u RANDOM\u KEY\u USER,相关索引是FK\u RANDOM\u KEY

我在doctrine:migrations:diff中重命名索引时遇到问题。每次运行此命令时,doctrine都会创建sql查询以重命名数据库中的现有索引。有没有办法防止这种行为

详细说明: 我们在Oracle上有大的(大约200个表)旧数据库。约束和索引有命名约定,例如:
我们有表RANDOM\u KEYUSER,从RANDOM\u KEY到USER的外键(多对一),因此coinstraint有名称FK\u RANDOM\u KEY\u USER,相关索引是FK\u RANDOM\u KEY\u USER\I

实体声明:

/**
 * @ORM\Table(name="RANDOM_KEY")
 * @ORM\Entity
 */
class RandomKey { 
 ...
/**
 * @var \User
 *
 * @ORM\ManyToOne(targetEntity="\User")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="USER_ID", referencedColumnName="USER_ID")
 * })
 */
private $user; 
关系宣言:

/**
 * @ORM\Table(name="RANDOM_KEY")
 * @ORM\Entity
 */
class RandomKey { 
 ...
/**
 * @var \User
 *
 * @ORM\ManyToOne(targetEntity="\User")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="USER_ID", referencedColumnName="USER_ID")
 * })
 */
private $user; 
迁移的结果:diff commad为:

$this->addSql("ALTER INDEX FK_RANDOM_KEY_USER_I RENAME TO IDX_C54F7889A0666B6F");
我深入研究了教义,尝试了一些调试。索引之间没有其他区别,只有名称。我还尝试将索引添加到@ORM/Table中。有没有办法防止索引重命名

相关作曲家数据:

  • “symfony/symfony”:“2.4.*”
  • “条令/orm”:“2.5.*”
  • “条令/dbal”:“2.5.*”
  • “条令/迁移”:“1.0.*@dev”
  • “条令/条令包”:“1.2.*”
  • “条令/条令迁移包”:“2.1.*@dev”

这让我快发疯了。你有没有弄清楚发生了什么,这些奇怪的IDX_BLAHBLAH十六进制值索引是从哪里来的?我没有。这个虫子很奇怪,我找不到原因。在这之后,我们使用了一些变通方法(由我们自己编写迁移,但这不是解决这个问题的方法)。现在我在另一家公司工作,我无法测试可行的解决方案。不确定这是否有助于您作为评论而不是回答:使用symfony 4.3和doctrine 2,我们遇到了类似的问题。单独将索引定义添加到@ORM/Table并不起作用,但结合删除缓存文件夹,它实际上解决了问题。