php - 执行“ALTER TABLE”时发生异常

标签 php mysql symfony doctrine-orm

我在多对多关联方面遇到问题 我有 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/

相关文章:

mysql - MariaDB 列中仅允许正数

php - 在 session 中存储对象 Symfony 2

php - GOOGLE Maps API v3 和 MySQL 之间的动态关系

php - 奇怪的变量/Mysql 问题

php - 将 UTF-8 数据放入 latin1 数据库列时会发生什么?

php - 修改数据卷中的文件后添加了非法 token

mysql - IIS PHP MySQL 服务器堆栈在重负载下不可用

MySql LIMIT + JOIN 正在阻止返回数据?

php - Symfony 从子文件夹解析 yaml 文件

php - symfony2 和 swiftmailer 的内存泄漏