我在多对多关联方面遇到问题 我有 2 个实体,其中一个名为用户
/**
* @ManyToMany(targetEntity="DataSiteBundle\Entity\Site", mappedBy="user")
* @ORM\JoinColumn(
* name="id_site",
* referencedColumnName="id_site",
* nullable=false,
* onDelete="CASCADE"
* )
*/
private $site;
另一个名为站点
/**
* @Groups({"site-read","site-write"})
* @ORM\ManyToMany(targetEntity="UserBundle\Entity\User" , inversedBy="site")
* @ORM\JoinColumn(
* name="id_user",
* referencedColumnName="id_user",
* nullable=false,
* onDelete="CASCADE"
* )
*
*/
private $user;
当我尝试执行doctrine:schema:update --force
我得到了这个 在 AbstractMySQLDriver.php 第 121 行:
An exception occurred while executing 'ALTER TABLE site_user ADD CONSTRAINT FK_B6096BB0F6BD1646 FOREIGN KEY (site_id) REFERENCES sp_site (id) ON DELETE CASCADE':
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
最佳答案
您的问题是有一个表具有现有约束。我认为有两种解决方案
如果你在开发中,你可以重建你的数据库
php bin/console doctrine:database:drop --force
php bin/console doctrine:database:create
php bin/console doctrine:schema:update --force
如果你在生产中,我认为你需要制作一个脚本来获取数据,保存在某个地方,删除表并重新制作它,或者在sql中创建一个脚本来跳过这个问题
关于php - 执行“ALTER TABLE”时发生异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49013508/