解决方案错误(名称为”yourtable.tablename”的表已存在)

本文概述

  • 可能的原因1
  • 可能的原因2
如果你正在基于Symfony的某个PHP项目上进行开发, 或者正在使用Doctrine ORM进行构建, 而无法使用以下命令在MySQL中创建表:
php bin/console doctrine:schema:update --force

你可能在这一刻吓坏了, 因为你不知道如何解决不是吗?好吧, 在本文中, 我们将为你提供一些技巧, 这些技巧可以帮助你解决此问题。
可能的原因1在大多数情况下, 也可能是对你的项目而言, 导致此错误的原因是, 你在项目中的同一表中有2个实体和orm文件, 它们可能位于不同的包中, 例如:
/AppBundle/Entity/Table.php/AppBundle/Resources/config/doctrine/Table.orm.yml# Somewhere else in other bundle of your app/OtherBundle/Entity/Table.php/OtherBundle/Resources/config/doctrine/Table.orm.yml

请注意, 根据你的工作方式, 不得将映射与orm.yml文件一起使用, 而应在实体中使用注释。因此, 你要做的就是跟踪重复的实体并将其删除(可以更改名称), 最后尝试再次使用命令更新架构。显然, 由于该原则不会两次创建同一张表, 因此将抛出此异常。
在这种情况下, 原因是因为将反向工程与理论结合使用, 这显然没有错, 但是在这种情况下, 正在创建你可能不知道已创建的文件。如果你不在项目中使用控件版本, 则更难识别此问题。
可能的原因2如果已经检查过由于表中有2个实体或orm文件而确实没有两次创建表, 那么你将需要检查项目中的批注(例如注解)的一对多单向关系, 因为你可能是手动修改了其中一个文件, 而你却发现错误。
由于此问题完全取决于你处理项目的方式, 因此我们无法为你提供帮助, 因此你将需要仔细阅读和分析数据库的结构, 并正确地重写关系。如果你仍然遇到问题, 那么我们建议你在Stack Overflow上创建一个问题, 并提供有关实体, orm文件的所有信息, 也许有人可以为你提供帮助。
【解决方案错误(名称为” yourtable.tablename” 的表已存在)】愿原力与你同在 !

    推荐阅读