Symfony 迁移 "名称为 "[name]" 的表已存在



我目前正在做一个symfony投资组合项目,在项目过程中我不得不重新安装xampp。由于我没有保存我的数据库,我丢失了它。我尝试用以下命令重新创建它:

php bin/console doctrine:database:create
php bin/console make:migration
php bin/console doctrine:migrations:migrate

但是我得到了这个错误

The table with name "portfolio.project_tag" already exists. 

为了给你上下文,我的实体是'项目','标签'和'类别'。项目和标签有多多多关系,因为每个项目可以有许多标签,每个标签可以有许多项目。项目和类别也有一个onetmany关系,因为每个项目都在一个类别中,每个类别可以有多个项目。我也有"用户"实体进入我的管理仪表板。

我试着删除所有链接的实体(项目,类别和标签),但它只会让事情变得更糟。我不明白为什么这个表已经存在了,因为我一开始就没有数据库。

另外,在我像个白痴一样不小心抑制了我的数据库之前,我的表没有任何问题。

如果你需要更多的细节请告诉我,谢谢你的帮助。

我试图抑制所有与投资组合相关的行。Project_tag表在我的迁移文件,但它没有工作

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

为了解决这个问题,显式地为manymany命名连接表,例如

  • @ORMManyToMany(targetEntity="AppEntityProgram", inversedBy="enrolled_participants")

  • @ORMJoinTable( name="enrolled_programs", joinColumns={

  • @ORMJoinColumn(name="participant_id", referencedColumnName="id") }, inverseJoinColumns={

  • @ORMJoinColumn(name="program_id", referencedColumnName="id") } )

private $enrolled_programs;

相关内容

最新更新