Я использую Symfony 4 с базой данных MySQL (5.5.57-0ubuntu0.14.04.1), которая не поддерживает тип JSON.
Когда я сопоставляю поле с "json", используя DoctrineКонфигурационный файл yml, файл миграции, генерируемый doctrine:migrations:diff
, использует тип JSON MySQL вместо LONGTEXT, и он завершается с ошибкой, если я пытаюсь запустить миграцию.
И каждый раз, когда выполняется изменение миграции, янеобходимо вручную изменить JSON на LONGTEXT для последних изменений и удалить изменения в JSON в результате более старых изменений.
Легко облажаться, если в одной из этих миграций вы забудете удалить «ALTER TABLE CHANGE»Somefield JSON ".
Мое решение, на данный момент, состоит в том, чтобы добавить в файл конфигурации doctrine.yml следующее:
doctrine:
dbal:
mapping_types:
longtext: json
Это делает некоторые странные, но легко отслеживаемые и удаляемые изменения, когда язапустите doctrine:migrations:diff -v
, как заменить на LONGTEXT несколько полей, которые уже были LONGTEXT.Я не знаю, почему, и я должен это исправить в конце концов.
Но, по крайней мере, я мог бы помешать доктрине пытаться изменить мой длинный текст на тип данных MySQL json, который отображается как тип данных доктрины json.
Кто-нибудь сталкивался с этой проблемой?
Спасибо!