doctrine - 使用fk更新列

时间:2017-05-11 11:27:36

标签: php mysql doctrine-orm doctrine symfony-2.7

我有两张桌子(让我们称之为A(idsome_other_columns)和B(a_idsome_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更新表(可能它有一个标志或者什么?我个人找不到。)

0 个答案:

没有答案