Обновление доктрины — Mysql Errno: 150

У меня проблема при попытке обновить таблицу. Я пытаюсь запустить следующую команду:

sudo -u www-data -H ./app/console doctrine:schema:update --dump-sql
ALTER TABLE users ADD CONSTRAINT FK_1483A5E9A35D7AF0 FOREIGN KEY (invitation_id)    REFERENCES Invitation (code);
CREATE UNIQUE INDEX UNIQ_1483A5E9A35D7AF0 ON users (invitation_id);

На основании этой конфигурации:

#../Entity/Users.php

/**
* @ORM\OneToOne(targetEntity="Invitation", inversedBy="user")
* @ORM\JoinColumn(referencedColumnName="code")
* @Assert\NotNull(message="Your invitation is wrong")
*/
protected $invitation;

#../Entity/Invitations.php

/** @ORM\OneToOne(targetEntity="Users", mappedBy="invitation", cascade={"persist", "merge"}) */
protected $user;

это дает мне ошибку:

[Doctrine\DBAL\DBALException]
An exception occurred while executing 'ALTER TABLE users ADD CONSTRAINT FK_1483A5E9F11D61A2 FOREIGN KEY (invitation) REFERENCES Invitation (code)':
SQLSTATE[HY000]: General error: 1005 Can't create table 'loopanime-mvc.#sql-402_bc3' (errno: 150)

Обе таблицы находятся на InnoDb, а коллекция — ut8_unicode_ci. Я не пытался запустить создание индекса вручную, потому что это не то, что я хочу !! Но почему, черт возьми, доктрина не создает сначала IDX перед FK?

Как я могу решить мою дилемму. Спасибо. Извините, если вопрос не ясен, я не могу описать больше, чем это …

0

Решение

(Извините, я пока не могу написать комментарий)
Вы проверили, что оба поля имеют одинаковый тип? Errno 150, как правило, производится по этой ошибке …

2

Другие решения

Его исправили, это была разница по структуре. Доктрина создала столбец с DEFAULT NULL, вероятно, потому что у него уже есть содержимое в таблице, и FK не может быть создан.

Удалите всю информацию / поместите некоторые глупые значения в столбец и измените, чтобы DEFAULT решил проблему.

Спасибо за вашу поддержку!

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector