Symfony - 迁移错误:名称为“database.table”的表已经存在

问题描述 投票:0回答:2

我当前的 Symfony 6 项目中存在以下问题。我的数据库中的两个表之间存在多对多关系。因此,创建了第三个参考表。

之后,我为这个查询所需的引用表创建了一个实体。但是,如果我现在想使用命令

php bin/console make:migration
创建一个新的迁移。 我总是收到错误消息“名称为“database.table”的表已经存在”

我认为问题的发生是因为,显然这个实体的表已经存在并且迁移命令想要创建它。但是我该如何解决这个问题呢?

提前感谢您的任何想法。 :)

mysql symfony doctrine migration
2个回答
0
投票

也许你正在尝试用额外的字段构建

ManyToMany
? 那么这不再是一个简单的
ManyToMany
:它现在是一个
OneToMany
+
ManyToOne
关系的反面。

更多细节在这里https://symfonycasts.com/screencast/collections/many-to-many-extra-fields


0
投票

在我的例子中,我在相同的两个实体(程序和参与者)之间有两个不同的 ManyToMany 关系,它们服务于不同的目的,并使用 make:entity 来创建它们。但是,命令行工具不会要求您提供连接表的名称,因此当您尝试更新模式时,它使用两者的默认名称,在本例中为 participant_program。

为了解决这个问题,您必须明确命名至少一个连接表,例如,

/**

  • @ORM\ManyToMany(targetEntity="App\Entity\Program", inversedBy="enrolled_participants")

    • @ORM\JoinTable(
    • name="enrolled_programs",
    • 加入列={
    •  @ORM\JoinColumn(name="participant_id", referencedColumnName="id")
      
    • },
    • inverseJoinColumns={
    •  @ORM\JoinColumn(name="program_id", referencedColumnName="id")
      
    • }
    • ) */

    私人 $enrolled_programs;

© www.soinside.com 2019 - 2024. All rights reserved.