Migrations Ambazo Hazitaharibu Production
Migration inafanya kazi vizuri kwenye mashine yako. Unaidishia (deploy) Ijumaa saa kumi na mbili jioni kwa sababu inaonekana ni ndogo. Kisha uwekaji (deployment) unakwama. Au mbaya zaidi, jedwali lenye mistari milioni 8 linajifunga (locks up) kwa sekunde 40 na tovuti yako inaporomoka.
Migrations hufanya kazi tofauti kwenye production. Database za ndani (local) huwa tupu na zina kasi. Database za production zina data halisi na watumiaji hai.
Fuata sheria hizi ili kuepuka majanga kwenye production.
Daima andika njia ya
downinayofanya kazi Kila migration inahitaji kazi yaupnadown. Kazi yadownlazima irudishe kazi yaupvilevile. Ikiwa huwezi kuandika rollback, migration yako ni ngumu mno. Ijaribu kwenye mashine yako kwa kutumiamigrateikifuatiwa namigrate:rollbackkabla ya kuipakia (push).Usibadilishe migration za zamani kamwe Unaweza kutaka kurekebisha ukubwa wa safu (column) kwenye faili la zamani la migration. Usifanye hivyo. Laravel haitairudia faili hilo kwenye seva. Badala yake, tengeneza migration mpya ili kubadilisha muundo. Migration ni historia ya mabadiliko. Unaongeza sura mpya badala ya kuandika upya sura za zamani.
Tumia
nullableau thamani za kuanzia (default values) Kuongeza safu yaNOT NULLkwenye jedwali lenye data iliyopo husababisha makosa. Database haijui nini cha kuweka kwenye mistari ya zamani.
Tumia mbinu hizi badala yake:
• Fanya safu mpya iwe nullable.
• Weka thamani ya kuanzia (default value).
• Ikiwa safu lazima iwe ya lazima, ifanye kwa hatua tatu: itengeneze kama nullable, jaza data, kisha ibadilishe kuwa NOT NULL.
Upotevu wa data ni wa kudumu Amri ya
dropColumnhufuta data milele. Rollback inaweza kutengeneza upya safu, lakini data iliyomo ndani imepotea. Kabla ya kufuta safu (drop a column), hakikisha una nakala za akiba (backups). Njia salama zaidi ni kuacha kutumia safu hiyo kwenye kodi yako kwanza, subiri wiki chache, kisha iondoe kwenye database.Tenganisha mabadiliko ya schema na mabadiliko ya data Kuendesha
User::all()ndani ya migration kunaweza kupakia mamilioni ya mistari kwenye kumbukumbu (memory) na kuharibu uwekaji (deploy) wako. Ikiwa ni lazima ubadilishe data wakati wa migration, tumiachunkByIdili kuchakata rekodi katika makundi madogo.Tumia bendera ya
forcekwenye pipelines Pipelines za uwekaji wa kiotomatiki (automated deployment pipelines) zitakwama ikiwa Laravel itaomba uthibitisho. Tumia amri hii kwenye skripti zako za uwekaji:php artisan migrate --forceTahadhari kuhusu ukwasi wa majedwali (table locks) Kubadilisha safu au kuongeza index kwenye jedwali kubwa sana kunafunga jedwali hilo. Hii husababisha muda wa kutofanya kazi (downtime). Kwa majedwali makubwa sana, angalia zana za mabadiliko ya schema ya mtandaoni (online schema change tools) au fanya mabadiliko wakati wa saa ambazo watumiaji ni wachache.
Orodha ya ukaguzi kabla ya kuipakia (push):
• Je, njia ya down inafanya kazi?
• Je, nilijaribu rollback kwenye mashine yangu (locally)?
• Je, ninatengeneza migration mpya badala ya kuhariri moja ya zamani?
• Je, safu mpya ni nullable au ina thamani ya kuanzia (default)?
• Je, nina nakala ya akiba (backup) kabla ya kufuta safu (dropping columns)?
Chanzo: https://dev.to/denisgusto1/migrations-que-nao-quebram-em-producao-o-guia-que-ninguem-te-deu-363o
