本文概述
如果你正在基于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文件的所有信息, 也许有人可以为你提供帮助。
愿原力与你同在 !
评论前必须登录!
注册