Php 条令-使用fk更新列
我有两个表(让我们称它们为A(Php 条令-使用fk更新列,php,mysql,doctrine-orm,doctrine,symfony-2.7,Php,Mysql,Doctrine Orm,Doctrine,Symfony 2.7,我有两个表(让我们称它们为A(id,其他一些列)和B(A\u id,其他一些列)。显然a_idfrom B指向idfrom a(上面有一个fk)。一切都很好。现在。。。问题是在创建表时,错误地将id设置为signed。我想修复它并使其不带签名(但也可能是影响列定义的任何其他更改) 如果根据查询进行此操作,则停用fks/删除该fk,进行更改,激活后退/添加后退fk 我需要从条令:schema:update(因为在服务器部署bla-bla->让我们说因为过程上自动运行)中执行此操作 我对实体进行了具
id
,其他一些列
)和B(A\u id
,其他一些列
)。显然a_id
from B指向id
from a(上面有一个fk)。一切都很好。现在。。。问题是在创建表时,错误地将id设置为signed。我想修复它并使其不带签名(但也可能是影响列定义的任何其他更改)
如果根据查询进行此操作,则停用fks/删除该fk,进行更改,激活后退/添加后退fk
我需要从条令:schema:update(因为在服务器部署bla-bla->让我们说因为过程上自动运行)中执行此操作
我对实体进行了具体更改:
A:
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
* @ORM\Table(name="B", uniqueConstraints={@ORM\UniqueConstraint(name="a_b", columns={"aEntity"})})
* @ORM\HasLifecycleCallbacks()
B:
/**
* @var aEntity
*
* @ORM\ManyToOne(targetEntity="CoreBundle\Entity\A", inversedBy="bEntity")
* @ORM\JoinColumn(name="a_id", referencedColumnName="id")
*/
private $aEntity;
生成的代码看起来正确:
$php app/console doctrine:schema:update --dump-sql
ALTER TABLE A CHANGE id id INT UNSIGNED AUTO_INCREMENT NOT NULL;
ALTER TABLE B CHANGE a_id a_id INT UNSIGNED DEFAULT NULL;
但是。。。当然,我会得到一个错误(因为fk约束列定义,并且没有禁用)
我如何使用doctrine schema update更新表(可能它有一个标志或什么?我个人找不到任何标志。)?你看到这个问题了吗?不我现在查过了,但我不知道怎么用。你能解释一下吗。?(据我所见,它指的是db迁移-我没有使用迁移,我使用实体注释来更新架构;旁注…我以前从未使用过迁移,但从我在这里看到的:它没有引用实体,它是手动更新内容->我承认我的假设可能是错误的,如果是,请指出其中:))。我认为单靠注释是无法做到这一点的。
An exception occurred while executing 'ALTER TABLE A CHANGE id id INT UNSIGNED AUTO_INCREMENT NOT NULL':
SQLSTATE[HY000]: General error: 1833 Cannot change column 'id': used in a foreign key constraint 'FK_3041AF5B7975B7E7' of table 'db_name.a'