Команды «мигрируют: обновлять» и «мигрировать: сбросить Понимание их различий имеет решающее значение для разработчиков Laravel, чтобы эффективно обрабатывать состояния базы данных во время разработки или развертывания.
мигрировать: обновить
Команда `PHP Migrisan Migrate: обновить` используется для отката всех миграций, а затем запустить их все снова. Это означает, что он откатится назад каждую применяемую миграцию (выполнение метода `down ()` каждой миграции), а затем снова запускает метод `up ()` для каждой миграции, чтобы восстановить схему базы данных с нуля.
- Что он делает:
- откатывает все миграции (отменяет все изменения схемы).
- Пересмотреть все миграции, чтобы восстановить схему базы данных.
- Типичные варианты использования:
- Полезно, когда вы хотите сбросить схему базы данных, сохраняя при этом структуру базы данных посредством миграции.
- Позволяет тестировать миграции, чтобы убедиться, что они могут быть применены чисто несколько раз.
-Часто в сочетании с опцией `-seed` (` PHP Artisan Migrate: обновить -седеда), чтобы заполнить базу данных с семенными данными после его восстановления.
- Преимущества:
- Поддерживает структуру базы данных в соответствии с правильным применением методов `down ()` и `up ()`.
-Может селективно освежить ограниченное количество миграций, используя опцию «--Step` (например,` PHP Artisan Migrate: Refresh -step = 5` отказатся назад и повторно запустит последние пять миграций).
- Производительность:
- Может быть медленнее, чем «мигрировать: Fresh» при работе с большим количеством миграций, потому что он выполняет метод `down ()` для каждой миграции, прежде чем повторно их применять.
- Данные:
- Поскольку он откатывается от всех миграций, данные в таблицах будут потеряны, если не будет повторно
- Сохраняет логику отката, определенную внутри миграции, поэтому она может предотвратить несоответствия, если миграция вниз будет тщательно написана.
мигрировать: сбросить
`PHP Artisan Migrate: Reset` Командовая команда откатается назад все примененные миграции, возвращая базу данных в свое первоначальное не мигрированное состояние.
- Что он делает:
- Отвергает все миграции, выполняя метод `down ()` каждой миграции.
- В отличие от «обновления», он не заполняет миграции.
- Типичные варианты использования:
- Полезно, когда вы хотите полностью отменить все миграции, не заново их.
- Помогает в сценариях, где вам нужно полностью очистить схему, прежде чем решить, что делать дальше.
- Преимущества:
- Убирает все изменения схемы базы данных на основе миграции.
- Данные:
- Как и в случае с `rebresh's, переходная миграция приводит к потере данных таблицы.
- Никакая схема не будет существовать после того, как все миграции будут сброшены.
- Поведение:
- оставляет базу данных в не мигрируемом состоянии.
- Требуется вручную запустить `PHP Artisan Migrate 'впоследствии, если намеревается восстановить схему.
Дополнительный контекст: мигрировать: свежее сравнение
Несмотря на то, что не спрашивают напрямую, команда «мигрировать: Fresh» часто путается с `rewresh 'и` streset' и помогает дальнейшему прояснить различия:
- `PHP Artisan Migrate: Fresh` выпускает все таблицы в базе данных напрямую, не запуская методы` down () `, а затем запускает все миграции.
- Это быстрее, потому что вместо того, чтобы отступать миграцию путем миграции, это просто бросает все таблицы.
- Идеально подходит для средств разработки, где приемлема база данных без логики отката является приемлемым.
-Как и «Обновление», его можно объединить с `-seed` для заполнения данных (например,` migrate: fresh -seed`).
более глубокое объяснение различий
- Как происходит откат:
- `rewresh` и` сбросить
- `сбросить` возвращает все и останавливается.
- `ОБНОВЛЕНИЕ 'ОТКЛЮЧИВАЕТ ВСЕХ, а затем снова мигрирует.
- Состояние базы данных после команды:
- После «сброса» схема базы данных пуста (без таблиц от миграций).
- После «обновления» схема базы данных перестраивается, как будто недавно мигрируется.
- Потеря данных:
- Обе команды вызывают потерю данных, так как все миграции полностью откатываются.
-`Обновить 'может автоматически вновь ввести данные семян, если используется флаг` -seed`.
- варианты использования в жизненном цикле разработки:
- Используйте `rewresh` при разработке или тестировании миграций, и вы хотите восстановить свою схему, возможно, привлекли данные.
- Используйте «Сброс», чтобы полностью очистить схему миграции, прежде чем применять новые миграции вручную или запустить свежий мигрирование.
Практические заметки для разработчиков Laravel
- Обе команды зависят от того, что миграции правильно списаны с помощью `up ()` и `down ()` методов, что означает, что методы `down ()` отсутствуют или неполные команды отката (`rebresh` и` recet`) могут потерпеть неудачу или оставить базу данных в непоследовательном состоянии.
- «Обновление» можно считать более безопасным, чем «свежие» в средах, где вы хотите уважать логику отката и потенциальные отношения данных во время миграции.
- Ни одна команда не должна использоваться небрежно в производственных базах данных без резервных копий, так как все данные будут потеряны.
- Они в основном предназначены для использования в местных средах для разработки или тестирования, где итерация схемы часты и данные могут быть сброшены без последствий.
Краткое содержание
Ключевое различие:
- мигрировать: обновить - откатитесь от всех миграций, затем снова запустите все миграции.
- мигрировать: сбросить - откатитесь от всех миграций, но не перезапустите их.
«Мигрируйте: обновлять фактором, эффективно восстанавливает схему с нуля через откат и мигрируйте, позволяя повторно обновлять и пошаговые обновления, в то время как« мигрировать: сброс »просто возвращает базу данных в неизменное состояние.
Обе команды являются фундаментальными инструментами для разработчиков Laravel для управления версиями баз данных, но они обслуживают разные рабочие процессы и оказывают уникальное влияние на состояние базы данных.
Это понимание помогает в выборе правильной команды для различных этапов разработки, тестирования и развертывания приложений.
Каждое использование должно учитывать последствия для потери данных, согласованности схемы приложения и намерения разработчика для управления миграциями базы данных в рамках проекта Laravel.