Doctrine проблемы со схемой: обновление при использовании типа массива - PullRequest
0 голосов
/ 16 апреля 2020

Я использую следующее описание orm:

App\Entity\Journal:
type: entity
table: hpa_journal
repositoryClass: App\Repository\JournalRepository
id:
    id:
        type: integer
        id: true
        generator:
            strategy: AUTO
fields:
    longDescription:
        type: array
        nullable: true
        column: long_description

Когда я запускаю doctrine:schema:create, у него вообще нет проблем и создается БД. Но когда я запускаю schema:update, я получаю следующую ошибку:

php bin/console doctrine:schema:update --dump-sql

 The following SQL statements will be executed:
     ALTER TABLE HPA_JOURNAL MODIFY (long_description CLOB DEFAULT NULL);

Что не имеет смысла, поскольку CLOB уже как DEFAULT NULL, doctrine сделал это таким образом с schema:create

Когда я запускаю schema:update --force, чтобы избавиться от сообщения, я получаю ошибку ORACLE:

ORA-22859: invalid modification of columns

1 Ответ

0 голосов
/ 16 апреля 2020

Когда doctrine сравнивает БД и модель, это вызывает проблему, поскольку в БД типы "text", "array", "json_array", ... являются просто CLOBS. Чтобы действительно изменить ситуацию, вы должны добавить (если не сделано автоматически, как в моем случае) правильный комментарий:

COMMENT ON COLUMN HPA_JOURNAL.LONG_DESCRIPTION IS '(DC2Type:array)'
...