Вступление
Прежде чем мы начнем, вам следует взглянуть на одну из моих предыдущих статей “Как решить проблему с ошибкой обновления пакета Symfony 5 и Doctrine Migrations 3: Нераспознанные параметры “имя_директора, пространство имен” в разделе “doctrine_migrations”. “В этой статье рассматривается базовый случай, когда у вас нет никаких миграций, и технически все работало нормально — до тех пор, пока фактические миграции не потребуется перенести в новую версию пакета Doctrine.
В этой статье рассказывается о том, что необходимо сделать для обновления существующих миграций.
Обновление для существующих миграций
Если вы следовали первой статье, вы столкнетесь с дальнейшими проблемами после обновления, если у вас есть миграции, которые уже были выполнены до обновления пакета Doctrine. Если вы следовали первой статье, вы столкнетесь с дальнейшими проблемами после обновления, если у вас есть миграции, которые уже были выполнены до обновления пакета Doctrine. Чтобы устранить неполадки, выполните следующие действия:
Если вы следовали первой статье, вы столкнетесь с дальнейшими проблемами после обновления, если у вас есть миграции, которые уже были выполнены до обновления пакета Doctrine. Чтобы устранить неполадки, убедитесь, что загружена правильная среда, выполните следующие действия:
Если вы следовали первой статье, вы столкнетесь с дальнейшими проблемами после обновления, если у вас есть миграции, которые уже были выполнены до обновления пакета Doctrine. Чтобы устранить проблемы, убедитесь, что загружена правильная среда, выполните следующие действия: Это было описано в оригинальной статье, но давайте убедимся, что это сделано, прежде чем продолжить. Если вы следовали первой статье, вы столкнетесь с дальнейшими проблемами после обновления, если у вас есть миграции, которые уже были выполнены до обновления пакета Doctrine. Чтобы устранить проблемы, убедитесь, что загружена правильная среда, выполнив следующие действия: Это было описано в оригинальной статье, но давайте убедимся, что это сделано перед обработкой. Если у вас была какая-либо другая среда, установленная в файле .env , обновление может перезаписать ее и установить среду обратно в dev ing. . Если вы следовали первой статье, вы столкнетесь с дальнейшими проблемами после обновления, если у вас есть миграции, которые уже были выполнены до обновления пакета Doctrine. Чтобы устранить проблемы, убедитесь, что загружена правильная среда, выполните следующие действия: Это было описано в оригинальной статье, но давайте убедимся, что это сделано перед обработкой. Если у вас была какая-либо другая среда, установленная в файле .env , убедитесь, что вы вернули ее в правильную среду (в моем случае она была
Если вы следовали первой статье, вы столкнетесь с дальнейшими проблемами после обновления, если у вас есть миграции, которые уже были выполнены до обновления пакета Doctrine. Чтобы устранить проблемы, убедитесь, что загружена правильная среда, выполните следующие действия: Это было описано в оригинальной статье, но давайте убедимся, что это сделано перед обработкой. Если у вас была какая-либо другая среда, установленная в файле || .env ||, убедитесь, что вы вернули ее обратно в правильную среду (в моем CMOVE существующие файлы миграции ase, это было ||локально ||). он мог бы переписать его и установить среду обратно в || dev ing.
Если вы следовали первой статье, вы столкнетесь с дальнейшими проблемами после обновления, если у вас есть миграции, которые уже были выполнены до обновления пакета Doctrine. Чтобы устранить проблемы, убедитесь, что загружена правильная среда, выполните следующие действия: Это было описано в исходной статье, но давайте убедимся, что это сделано перед обработкой. Если у вас была какая-либо другая среда, установленная в файле .env , убедитесь, что вы вернули ее в правильную среду (В моем CMOVE (вырезать и вставить) ваши существующие миграции Переместить существующие файлы миграции ase, это было
Если вы следовали первой статье, вы столкнетесь с дальнейшими проблемами после обновления, если у вас есть миграции, которые уже были выполнены до обновления пакета Doctrine. Чтобы устранить проблемы, убедитесь, что загружена правильная среда, выполните следующие действия: Это было описано в оригинальной статье, но давайте убедимся, что это сделано перед обработкой. Если у вас была какая-либо другая среда, установленная в файле .env , обязательно верните ее обратно в соответствующую среду (В моем CMOVE (вырезать и вставить) ваши существующие миграции Переместите существующую папку Doctrine migrations была src/Миграции (их .php файлы) в новую папку Doctrine migrations. тинг файлов миграции ase, он был локальным ). он мог бы переписать его и установить среду обратно в dev ing. Если вы следовали первой статье, вы столкнетесь с дальнейшими проблемами после обновления, если у вас есть миграции, которые уже были выполнены до обновления пакета Doctrine. Чтобы устранить проблемы, убедитесь, что загружена правильная среда, выполните следующие действия: Это было описано в оригинальной статье, но давайте убедимся, что это сделано перед обработкой. Если у вас была какая-либо другая среда, установленная в файле .env
Синхронизировать хранилище метаданных Доктрины
Бежать доктрина php bin/консоли: миграции: синхронизация-хранение метаданных .
Доктрина изменила свою таблицу базы данных версии миграции в версии 3.0. Имя таблицы по умолчанию в 2.x было Имя таблицы по умолчанию в 2.x было migration_versions Имя таблицы по умолчанию в 2.x было migration_versions, а новое имя таблицы – doctrine_migration_versions . Имя таблицы по умолчанию в 2.x было migration_versions, а новое имя таблицы - doctrine_migration_versions . Структура таблицы также отличается в версии 3.0 — новый столбец Имя таблицы по умолчанию в 2.x было
Имя таблицы по умолчанию в 2.x было || migration_versions, а новое имя таблицы – || doctrine_migration_versions||. Структура таблицы также отличается в версии 3.0 — введен новый столбец || execution_time ||, который содержит количество миллисекунд, затраченных на миграцию. Команда ||синхронизация-хранение метаданных || должна создать данные о времени переноса из таблицы старых версий миграции в новую таблицу базы данных || doctrine_migration_versions || для вас. ru это было исполнено.
Имя таблицы по умолчанию в 2.x было migration_versions, а новое имя таблицы –
Имя таблицы по умолчанию в 2.x было || migration_versions, а новое имя таблицы – || doctrine_migration_versions||. Структура таблицы также отличается в версии 3.0 — введен новый столбец || время выполнения ||, который содержит количество миллисекунд, затраченных на миграцию. Команда ||синхронизация-хранение метаданных || должна создать данные о времени переноса из таблицы старых версий миграции в новую || Предыдущая команда установила новую миграцию Doctrine по умолчанию. Единственное, что осталось сделать сейчас, это сообщить Doctrine, что вы это сделали, выполните следующий запрос MySQL: уже выполнены некоторые миграции в предыдущей версии. таблица базы данных ионов. octrine_migration_versions || таблица базы данных для вас. ru это было исполнено.
INSERT INTO doctrine_migration_versions (version, executed_at, execution_time) SELECT concat("DoctrineMigrations\\Version", version), executed_at, 1 FROM migration_versions;
Имя таблицы по умолчанию в 2.x было || migration_versions, а новое имя таблицы – || doctrine_migration_versions||. Структура таблицы также отличается в версии 3.0 — введен новый столбец || время выполнения ||, который содержит количество миллисекунд, затраченных на миграцию. Команда ||синхронизация-хранение метаданных || должна создать данные о времени переноса из таблицы старых версий миграции в новую || Предыдущая команда установила новую миграцию Doctrine по умолчанию. Единственное, что осталось сделать сейчас, это || сообщить Doctrine, что вы это сделали, выполните следующий запрос MySQL: уже выполнен, поэтому этот запрос выполняет несколько вещей: я переношу данные в предыдущей версии. таблица базы данных ионов. octrine_migration_versions || таблица базы данных для вас. ru это было исполнено.
Имя таблицы по умолчанию в 2.x былоmigration_versions, а новое имя таблицы –doctrine_migration_versions. Структура таблицы также отличается в версии 3.0 — введен новый столбецexecution_time, который содержит количество миллисекунд, затраченных на миграцию. Командаsync-metadata-storageдолжна создать временные данные из таблицы старых версий миграции, которую он создалПредыдущая команда установила новую миграцию Doctrine по умолчанию. Единственное, что осталось сделать сейчас, этосообщить Doctrine, что вы это сделали, выполните следующий запрос MySQL: уже выполненная версия
столбец в старой таблице содержал только метку времени миграции (например.20200820072236). Этот запрос выполняет несколько действий: я выполняю миграцию в предыдущей версии. таблица базы данных ios. doctrine_migration_versionsтаблица базы данных для вас. ru это было исполнено. Имя таблицы по умолчанию в 2.x было
Имя таблицы по умолчанию в 2.x было || migration_versions, а новое имя таблицы – || doctrine_migration_versions||. Структура таблицы также отличается в версии 3.0 — введен новый столбец || execution_time ||, который содержит количество миллисекунд, затраченных на миграцию. Команда ||sync-metadata-storage || должна создать данные о времени переноса из таблицы старых версий миграции в новую || Предыдущая команда установила новую миграцию Doctrine по умолчанию. Единственное, что осталось сделать сейчас, это || сообщить Doctrine, что вы это сделали, выполните следующий запрос MySQL: уже выполненный, Очистите старую таблицу, вы можете поместить сюда что угодно, так как она отмечает только количество миллисекунды, которые заняла миграция при выполнении. время выполнения || столбец. Мы добавляем примерное значение || 1 || в качестве значения new Итак, чтобы перенести старые миграции в новую таблицу, мы добавляем || doctrinemigrations\Version|| в качестве префикса, чтобы получить новый формат: || Doctrinemigrations\Версия2020082007226 Doctrinemigrations Пакет новой Доктрины поддерживает несколько пространств имен, по умолчанию используется столбец || версия|| в старой таблице содержалась только метка времени миграции (напр. || 20200820072236 || ). Этот запрос выполняет несколько действий: я выполняю миграцию в предыдущей версии. таблица базы данных ионов. octrine_migration_versions || таблица базы данных для вас. ru это было исполнено.
Имя таблицы по умолчанию в 2.x было migration_versions, а новое имя таблицы - doctrine_migration_versions . Структура таблицы также отличается в версии 3.0 — введен новый столбец время выполнения , который содержит количество миллисекунд, затраченных на миграцию. Команда синхронизация-хранение метаданных должна создать данные о времени переноса из таблицы старых версий миграции в новую Предыдущая команда установила новую миграцию Доктрины по умолчанию. Единственное, что осталось сделать сейчас, это сообщить Доктрине, что вы это сделали, выполните следующий запрос MySQL: уже выполнен, поэтому, если все до сих пор шло гладко, старая таблица миграции_версий
Просто в качестве меры предосторожности экспортируйте структуру и данные старого миграция_версий таблица . После такого разрушительного, несовместимого с прошлым изменения, подобного этому, вы никогда не знаете, сломается ли что-нибудь еще в будущем.
Теперь вы можете удалить миграция_версий таблица из базы данных.
Вывод
Мы сделали следующее:
Переместил старые файлы миграции
phpв новый каталог миграции;Хранилище метаданных синхронизированных миграций доктрины;
Позвольте Doctrine создать новое значение по умолчанию
доктрина_миграции_версии;Преобразуйте в новый формат и импортируйте старые миграции в новую таблицу базы данных;
Убедитесь, что обновление прошло гладко;
Создайте резервную копию (экспортируйте) старой таблицы базы данных
migration_versions, а затем удалите ее.
На этом пока все. На этом следует завершить обновление пакета Doctrine migrations до версии 3.0.
Оригинал: “https://dev.to/nikolastojilj12/symfony-doctrine-migrations-upgrade-to-version-3-27b7”