Команди `мігрують: оновити 'та` міграція: скидання `in laravel, пов'язані з управлінням міграціями бази даних, але вони служать різним цілям і поводяться різними способами під час управління схеми баз даних. Розуміння їх відмінностей має вирішальне значення для розробників Laravel ефективно обробляти стани баз даних під час розробки чи розгортання.
мігруйте: оновити
Команда `PHP Artisan Mastrate: refresh` використовується для відкочення всіх міграцій, а потім знову запустити їх. Це означає, що він відкидає кожну міграцію, яка застосовувалася (виконання методу `down ()` кожної міграції), а потім знову запускає метод `up () для кожної міграції для відновлення схеми бази даних з нуля.
- Що це робить:
- Відколює всі міграції (скасовує всі зміни схеми).
- повторно проводить усі міграції для відновлення схеми бази даних.
- Типові випадки використання:
- Корисно, коли ви хочете скинути схему бази даних, зберігаючи структуру бази даних, послідовну за допомогою міграцій.
- Дозволяє тестувати міграції, щоб переконатися, що їх можна застосувати чисто кілька разів.
-Часто поєднується з варіантом `-Seed` (` PHP Artisan Imprate: refresh-seed`) для репопуляції бази даних з даними насіння після її відновлення.
- Переваги:
- Зберігає структуру бази даних послідовною за допомогою належного застосування методів `down ()` та `up ()`.
-Можна вибірково оновити обмежену кількість міграцій, використовуючи опцію `-step` (наприклад,` PHP Artisan Mistrate: eforresh-step = 5` повернеться назад і повторно запускає останні п’ять міграцій).
- Виконання:
- може бути повільніше, ніж `мігрувати: свіжий 'при роботі з великою кількістю міграцій, оскільки він виконує метод` down () `для кожної міграції, перш ніж їх застосувати.
- Дані:
- Оскільки він відкидає всі міграції, дані в Таблицях будуть втрачені, якщо не перепазується.
- Зберігає логіку відкатів, визначену всередині міграції, тому вона може запобігти невідповідностям, якщо міграції вниз будуть ретельно написані.
міграція: скидання
Команда `PHP Artisan Mastrate: Reset` повертає всі міграції, які були застосовані, повертаючи базу даних до її первісного немігрованого стану.
- Що це робить:
- Відколює всі міграції, виконуючи метод `down ()` кожної міграції.
- На відміну від `оновлення ', це не повторно переробляє міграції.
- Типові випадки використання:
- Корисно, коли ви хочете повністю скасувати всі міграції, не повторно застосовуючи їх.
- Допомагає в сценаріях, де вам потрібно повністю очистити схему, перш ніж вирішити, що робити далі.
- Переваги:
- Очистіть усі зміни схеми бази даних на основі міграції.
- Дані:
- Як і з `оновленням, перехід міграції назад призводить до втрати даних таблиці.
- Жодна схема не існує, коли всі міграції скинуться.
- Поведінка:
- залишає базу даних у стані ООН.
- Потрібно вручну запустити `PHP Artisan Migrate 'після цього, якщо маєте намір відновити схему.
Додатковий контекст: мігрувати: свіже порівняння
Хоча це не запитувало безпосередньо, команда "міграція: свіжа" часто плутається з "оновити" та "скидання" і допомагає ще більше з’ясувати відмінності:
- `PHP Artisan Imprate: Fresh` кидає всі таблиці в базі даних безпосередньо, не запускаючи методи` вниз () `, а потім запускає всі міграції.
- Це швидше, оскільки замість того, щоб відкоти міграції за допомогою міграції, вона просто скидає всі таблиці.
- Ідеально підходить для середовищ розробки, де витирання бази даних чистим без логіки відкатів є прийнятним.
-Як і `оновлення ', його можна поєднати з`-seed` для репопуляції даних (наприклад, `мігрувати: fresh-seed`).
глибше пояснення відмінностей
- Як відбувається відкат:
- `refresh` і` reset` обидва покладаються на методи `down ()` кожної міграції до зміни схеми.
- `Reset` відкочує все і зупиняється.
- `refresh` відкочує все, а потім знову переміщує все.
- Стан бази даних після команди:
- Після `Reset`, схема бази даних порожня (без таблиць від міграцій).
- Після `оновлення ', схема бази даних перебудована так, ніби свіжо мігрувана.
- Втрата даних:
- Обидві команди викликають втрату даних, оскільки всі міграції повністю відкочуються назад.
-`refresh` може автоматично повторно повторно повторно повторно, якщо використовується прапор`-seed`.
- Використання випадків у життєвому циклі розвитку:
- Використовуйте `оновлення` `під час розробки або тестування міграцій і ви хочете відновити схему, можливо, переводячи дані.
- Використовуйте `Reset`, щоб повністю очистити схему міграції, перш ніж застосовувати нові міграції вручну або запустити свіжу міграцію.
Практичні примітки для розробників Laravel
- Обидві команди залежать від того, що міграція належним чином написана з методами `up ()` і `down ()`, тобто якщо `down ()` методи відсутні або неповні, команди відколу (`оновлення 'і` reset`) можуть вийти з ладу або залишити базу даних у непослідовному стані.
- `refresh` можна вважати безпечнішим, ніж` свіжим `` у середовищах, де ви хочете поважати логіку відату та потенційних відносин даних під час міграції.
- Жодна команда не повинна використовуватися недбало в виробничих базах даних без резервних копій, оскільки всі дані будуть втрачені.
- Вони в першу чергу розроблені для використання в локальних середовищах розвитку або тестування, де ітерація схеми часті, і дані можуть бути скинуті без наслідків.
Резюме
Ключова відмінність:
- міграція: оновити - відкиньте всі міграції, а потім знову запустіть усі міграції.
- Міграція: Скиньте - відкиньте всі міграції, але не повторюйте їх.
`Міграція: Оновити` `Ефективно відновлює схему з нуля через відкат і мігруйте, дозволяючи відновити та поетапно оновлювати, а` мігруйте: reset` просто повертає базу даних до немігрованого стану.
Обидві команди є основними інструментами для розробників Laravel для управління версіями баз даних, але вони обслуговують різні робочі процеси та мають унікальний вплив на стан бази даних.
Це розуміння допомагає вибирати правильну команду для різних етапів розробки, тестування та розгортання.
Кожне використання повинно враховувати наслідки для втрати даних, узгодженості схеми додатків та наміру розробника для управління міграціями бази даних в рамках проекту Laravel.