Mwongozo wa Kutatua Migidifano ya Prisma Migration

Usitumie prisma migrate reset kwenye kanzidata ya uzalishaji (production database).

Ukiona ujumbe ukisema kuwa migration imebadilishwa au unahitaji kuweka upya (reset) schema, acha. Kuweka upya kutafuta data zako zote. Unaweza kutatua migidifano hii kwa mkono bila kupoteza chochote.

Makosa ya Kawaida ya Prisma na Jinsi ya Kuyarekebisha

Kosa: Migration imefeli katikati ya utekelezaji (P3018) • Rekebisha faili la SQL. • Tekeleza: npx prisma migrate resolve --rolled-back [migration_name] • Tekeleza: npx prisma db execute --file [path_to_sql_file] • Tekeleza: npx prisma migrate resolve --applied [migration_name]

Kosa: Migration imebadilishwa baada ya kutumika (Checksum mismatch) • Piga hesabu ya SHA-256 hash ya faili lako la sasa la migration. • Sasisha checksum kwenye jedwali la _prisma_migrations. • Muhimu: Sasisha mistari (rows) yote kwa jina hilo la migration. Usichuje kwa rolled_back_at.

Kosa: Safu ya shadow database haipo (P3006) • Hii hutokea wakati migration inapotaja safu (column) ambayo migration inayofuata imeitengeneza. • Prisma hupitia tena migrations kwa mpangilio wa muda (timestamp order). • Suluhisho: Hamisha kodi ya SQL kwenda kwenye migration ambapo safu hiyo inatengenezwa kwa mara ya kwanza.

Kosa: DROP COLUMN imezuiwa na sera ya RLS • Usalama wa Ngazi ya Safu (Row Level Security) wa PostgreSQL unaunganisha sera na safu (columns). • Suluhisho: Tumia CASCADE unapoondoa safu. • Mfano: ALTER TABLE "my_table" DROP COLUMN IF EXISTS "tenant_id" CASCADE;

Mbinu Bora kwa Migrations Salama

  • Uliza kanzidata kwanza. Usikisie ikiwa safu (column) au index ipo. Tumia maswali ya SQL ya moja kwa moja ili kuangalia schema halisi ya kanzidata yako kabla ya kuandika kodi ya migration.
  • Tumia IF EXISTS na IF NOT EXISTS. Hii inafanya migrations zako kuwa idempotent. Migration ya idempotent inaweza kutekelezwa mara nyingi bila kusababisha makosa.
  • Tumia kitalu cha DO kwa ajili ya vikwazo (constraints). Funga uongezaji wa Foreign Key kwenye ukaguzi ili kuona ikiwa jina la kikwazo tayari lipo.
  • Daima tumia CASCADE unapoondoa (drops) ikiwa unatumia Row Level Security.

Jedwali la Muhtasari

• P3018 (Imefeli katikati): Rekebisha SQL, kisha tumia resolve --rolled-back na resolve --applied. • Checksum mismatch: Piga hesabu ya hash mpya na usasisha mistari yote katika _prisma_migrations. • Kosa la Shadow DB: Angalia mpangilio wako wa timestamp na uhamishe mantiki ya SQL. • Kosa la RLS: Ongeza CASCADE kwenye kauli zako za DROP.

Chanzo: https://dev.to/aswindanu_anwar_38c31d278/the-only-guide-you-need-for-prisma-migration-conflicts-without-losing-data-6bc