Доктрина - обновлять столбцы с помощью fk

У меня есть 2 таблицы (назовем их A (id, some_other_columns) и B (a_id, some_other_columns)). очевидно a_id от точки B до id из A (и имеет на нем FK). Все хорошо. Теперь... проблема в том, что при создании таблиц идентификатор был установлен как подписанный. Я хочу исправить это и сделать его без знака (но это может быть и любое другое изменение, которое влияет на определение столбца).

Если вы делаете это из запросов, вы деактивируете fks / удаляете этот fk, вносите изменения, активируете back / add fk back.

Мне нужно сделать это из 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'

Как я могу обновить таблицы, используя обновление схемы доктрины (может быть, у него есть флаг или что-то? Лично я не могу найти ни одной.)?

0 ответов

Другие вопросы по тегам