我有两张桌子(让我们称之为A(id
,some_other_columns
)和B(a_id
,some_other_columns
))。显然,来自B的a_id
指向A中的id
(并且其上有一个fk)。一切都很好。现在......问题是,当表格被设置为id时,错误地设置为签名。我想修复它并使其无符号(但也可能是影响列定义的任何其他更改)。
如果您通过查询停用fks /删除该fk,请进行更改,然后重新启动/添加fk。
我需要从doctrine: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限制了列定义并且没有被禁用)。
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'
如何使用doctrine schema update更新表(可能它有一个标志或者什么?我个人找不到。)