Symfony / Doctrine продолжает создавать одну и ту же миграцию - PullRequest
2 голосов
/ 17 июня 2019

Редактировать: Оказывается, другие проекты на той же машине имеют ту же проблему.Вопрос касается одного конкретного проекта:

У меня есть проект Symfony4, в котором у меня есть несколько сущностей (созданных с помощью make:entity).Я только что заметил, что последние 4 миграции имеют один и тот же запрос (и да, я запускаю миграции между ними).Пример:

$this->addSql('ALTER TABLE event CHANGE visible_from visible_from DATETIME DEFAULT NULL, CHANGE visible_till visible_till DATETIME DEFAULT NULL, CHANGE max_signups max_signups INT DEFAULT NULL');

Я выполнил этот запрос вручную, и это фактически обновило таблицу.Затем я создал новую миграцию для проверки: приведенный выше запрос снова был здесь.

Я очистил кэш, запустил doctrine:cache:clear-metadata, дважды проверил на странные вещи, но все нормально.

У меня 3 одинаковых запроса каждый раз, и у всех них есть одна общая черта: они имеют nullable = true.Все остальные сущности не имеют nullable = true в них.

/**
 * @ORM\Column(type="integer", nullable=true)
 */
private $maxSignups;

Даунмиграция может быть подсказкой:

ALTER TABLE event CHANGE visible_from visible_from DATETIME DEFAULT \'NULL\',
                                                  This I find odd---^

Версия MariaDB: 10.2.14
PHP: 7.2.4
symfony / orm-pack: "^ 1.0"

Кто-нибудь знает, почему?

1 Ответ

0 голосов
/ 17 июня 2019

Я до сих пор не знаю, почему (поэтому я оставлю этот вопрос открытым на некоторое время), но вот что я сделал:

Я использовал MySQL и MariaDB, и по умолчанию MySQL. Выключил это, переключился на MariaDB и добавил версию в doctrine.yaml:

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_mysql'
        server_version: 'mariadb-10.2.14'

Хотя на самом деле это не имеет значения для версии. Я сделал опечатку и написал 12.2.14, и это сработало абсолютно. Я предполагаю, что у него есть чек version>$n.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...