Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuo skiriasi migracija: atnaujinti ir migruoti: atstatyti „Laravel“


Kuo skiriasi migracija: atnaujinti ir migruoti: atstatyti „Laravel“


Komandos „Migrate: Refresh“ ir „Migrate: Reset“ „Laravel“ yra susijusios su duomenų bazės migracijų valdymu, tačiau jie tarnauja skirtingais tikslais ir elgiasi skirtingais būdais duomenų bazės schemos valdymo metu. „Laravel“ kūrėjams labai svarbu suprasti jų skirtumus, kad būtų galima efektyviai tvarkyti duomenų bazių būsenas kuriant ar diegti.

Migrate: atnaujinti

„PHP Artisan Migrate: Refresh`“ komanda naudojama visoms migracijoms sugrąžinti ir vėl juos paleisti. Tai reiškia, kad jis atsitraukia kiekvieną taikytą migraciją (vykdant kiekvienos migracijos metodą „žemyn ()“) ir vėl paleidžia „aukštyn“ () metodą, kad kiekviena migracija būtų atstatyta duomenų bazės schema nuo nulio.

- Ką tai daro:
- Atsikrauna visas migracijas (panaikina visus schemos pakeitimus).
- Pakartotinai vykdykite visas migracijas, kad atstatytumėte duomenų bazės schemą.
- Tipiški naudojimo atvejai:
- Naudinga, kai norite iš naujo nustatyti duomenų bazės schemą, išlaikant duomenų bazės struktūrą pastovią per migraciją.
- Leidžia bandyti migracijas, kad jos būtų kelis kartus naudojamos švariai.
-Dažnai derinamas su parinktimi `-sėklų parinktis (` PHP amatininkų migracija: atnaujinti-sėklos), kad duomenų bazė būtų pakartota su sėklų duomenimis, po to, kai jį atstatė.
- Privalumai:
- išlaiko duomenų bazės struktūrą nuoseklią, tinkamai pritaikant `down ()` ir `up ()` metodus.
-Gali selektyviai atnaujinti ribotą migracijų skaičių, naudodamas parinktį `-step` (pvz.,` PHP amatininkų migracija: atnaujinimas-step = 5` pasuks atgal ir pakartotinai paleis paskutines penkias migracijas).
- Spektaklis:
- Gali būti lėtesnis nei „migruoti: švieži“, kai susiduriama su daugybe migracijų, nes prieš pradedant juos iš naujo, ji vykdo „žemyn ()“ metodą kiekvienam migracijai.
- Duomenys:
- Kadangi jis grąžina visas migracijas, duomenys lentelėse bus prarasti, jei nebus iš naujo.
- Išsaugo atšaukimo logiką, apibrėžtą migracijose, todėl ji gali užkirsti kelią neatitikimams, jei migracijos žemyn bus kruopščiai parašytos.

Migrate: Reset

„PHP Artisan Migrate: Reset“ komanda sukuria visas taikomas migracijas, grąžindamas duomenų bazę į pradinę nekontroliuojamą būseną.

- Ką tai daro:
- Atleiskite visas migracijas vykdydamas kiekvienos migracijos metodą „Down ()“.
- Skirtingai nuo „atnaujinimo“, jis neatnaujina migracijos.
- Tipiški naudojimo atvejai:
- Naudinga, kai norite visiškai atšaukti visas migracijas, jų nesukurdami.
- Padeda scenarijuose, kuriuose reikia visiškai išvalyti schemą, prieš nuspręsdami, ką daryti toliau.
- Privalumai:
- Išvalia visus migracijos pagrindu sukurtas duomenų bazės schemos keitimas.
- Duomenys:
- Kaip ir „atnaujinimo“ metu, perkėlimo atgal perkėlimo metu galima prarasti lentelės duomenis.
- Kai visos migracijos bus atkurtos, nėra schemos.
- Elgesys:
- palieka duomenų bazę nekontroliuojamoje būsenoje.
- Reikia rankiniu būdu paleisti „php amatisan“ migruojamą „po to, jei ketinate atstatyti schemą.

Papildomas kontekstas: Migrate: švieži palyginimas

Nors neprašoma tiesiogiai, komanda „Migrate: Fresh“ dažnai painiojama su „atnaujinti“ ir „atstatyti“ ir padeda toliau paaiškinti skirtumus:

- `PHP amatininkų migracija: šviežias tiesiogiai numeta visas lenteles duomenų bazėje, neveikdamas„ Down () “metodų, tada vykdo visas migracijas.
- Jis yra greitesnis, nes užuot perkėlęs migraciją per migraciją, jis tiesiog numeta visas lenteles.
- Idealiai tinka plėtros aplinkai, kai duomenų bazės valymas be atšaukimo logikos yra priimtina.
-Kaip „atnaujinti“, jis gali būti derinamas su „-sėklos“ duomenimis (pvz., „Migrate: Fresh-Seed“).

gilesnis skirtumų paaiškinimas

- Kaip atsitinka:
- „Atnaujinti“ ir „atstatyti“ abu remiasi kiekvieno migracijos metodais, kad būtų galima panaikinti schemos pokyčius.
- `RESET` RENGRINIAI GRĮŽTI VISKĄ ir sustoja.
- „Atnaujinti“ viską atsitraukia ir tada vėl viską perkelta.
- Duomenų bazės būsena po komandos:
- Po „Reset“ duomenų bazės schema yra tuščia (nėra lentelių iš migracijų).
- Po „atnaujinimo“ duomenų bazės schema yra atstatyta taip, tarsi šviežiai perkelta.
- Duomenų praradimas:
- Abi komandos sukelia duomenų praradimą, nes visos migracijos yra visiškai grąžintos.
-„Atnaujinti“ gali automatiškai iš naujo įvesti sėklų duomenis, jei naudojama „sėklos“ vėliava.
- Naudokite atvejus plėtros gyvavimo cikle:
- Kurdami ar išbandydami migracijas, naudokite „atnaujinti“ ir norite atstatyti savo schemą, galbūt iš naujo atnaujinti duomenis.
- Norėdami visiškai išvalyti migracijos schemą, naudokite „Reset“, prieš pradėdami naudoti naujus migracijas rankiniu būdu arba paleisti naują perkėlimą.

Praktinės pastabos „Laravel“ kūrėjams

- Abi komandos priklauso nuo to, kad migracijos tinkamai scenarijai aprašomos naudojant „UP ()` ir `Down () metodus, tai reiškia, jei trūksta„ Down () “metodų ar neišsamių, atsukimo komandos („ atnaujinti “ir„ reset “) gali nepavykti arba palikti duomenų bazę nenuoseklioje būsenoje.
- „Atnaujinti“ gali būti laikomas saugesniu nei „šviežia“ aplinkoje, kurioje norite gerbti „Rollback“ logiką ir galimus duomenų ryšius migracijos anuliavimo metu.
- Nei viena komanda neturėtų būti nerūpestingai naudojama gamybos duomenų bazėse be atsarginių kopijų, nes visi duomenys bus prarasti.
- Jie pirmiausia yra skirti naudoti vietinėje plėtros ar bandymo aplinkoje, kur dažnai schemos iteracija yra dažna ir duomenys gali būti atstatyti be pasekmių.

Santrauka

Pagrindinis skirtumas yra:

- Migrate: atnaujinkite - Atgal atgal visomis migracijomis, tada vėl vykdykite visas migracijas.
- Migrate: RESET - RENGRINKITE VISAS MIGRACIJA, bet neperduokite jų.

„Migrate: atnaujinti“ efektyviai atstato schemą nuo nulio per atšaukimą ir perkelkite, leisdamas pakartotinį sėklą ir laipsnišką atnaujinimą, o „Migrate: Reset“ tiesiog grąžina duomenų bazę į nepakartojamą būseną.

Abi komandos yra pagrindinės „Laravel“ kūrėjų įrankiai, skirti valdyti duomenų bazės versijas, tačiau jos aptarnauja skirtingas darbo eigas ir turi unikalų poveikį duomenų bazės būsenai.

Šis supratimas padeda pasirinkti tinkamą komandą įvairiems programų kūrimo, testavimo ir diegimo etapams.

Kiekvienas naudojimas turėtų apsvarstyti duomenų praradimo, taikymo schemos nuoseklumo ir kūrėjo ketinimų valdyti duomenų bazių migracijas „Laravel“ projekte pasekmes.