我有很多问题与许多关联我有2个实体一个命名用户
/**
* @ManyToMany(targetEntity="DataSiteBundleEntitySite", mappedBy="user")
* @ORMJoinColumn(
* name="id_site",
* referencedColumnName="id_site",
* nullable=false,
* onDelete="CASCADE"
* )
*/
private $site;
,另一个被命名为网站
/**
* @Groups({"site-read","site-write"})
* @ORMManyToMany(targetEntity="UserBundleEntityUser" , inversedBy="site")
* @ORMJoinColumn(
* name="id_user",
* referencedColumnName="id_user",
* nullable=false,
* onDelete="CASCADE"
* )
*
*/
private $user;
当我尝试做doctrine:schema:update --force
我明白了在AbstractMysqldriver.php行121中:
执行'Alter Table Site_user添加约束FK_B6096BB0F6BD1646外键(site_id(引用sp_site(id(sp_site(id(时,
发生了例外。
sqlstate [hy000]:一般错误:1215无法添加外键约束
您的问题是有一个具有现有约束的表。我认为有两个解决方案
如果您在开发人员中,则可以重建数据库
php bin/console doctrine:database:drop --force
php bin/console doctrine:database:create
php bin/console doctrine:schema:update --force
如果您正在生产中,我认为您需要制作脚本以获取数据,保存某个地方,删除表并重新制作它,或在SQL中创建脚本以跳过此问题