Prisma Migration முரண்பாடுகளைத் தீர்ப்பதற்கான வழிகாட்டி

தயாரிப்புத் தரவுத்தளத்தில் (production database) prisma migrate reset கட்டளையை இயக்க வேண்டாம்.

ஒரு migration மாற்றியமைக்கப்பட்டுள்ளது அல்லது schema-வை reset செய்ய வேண்டும் என்று செய்தி வந்தால், உடனே நிறுத்திவிடுங்கள். Reset செய்வதன் மூலம் உங்கள் தரவுகள் அனைத்தும் நீக்கப்படும். எதையும் இழக்காமல் இந்த முரண்பாடுகளை நீங்கள் கைமுறையாக (manually) சரிசெய்ய முடியும்.

பொதுவான Prisma பிழைகள் மற்றும் அவற்றைச் சரிசெய்யும் முறைகள்

பிழை: Migration பாதியிலேயே தோல்வியடைந்தது (P3018) • SQL கோப்பைச் சரிசெய்யவும். • இயக்கவும்: npx prisma migrate resolve --rolled-back [migration_name] • இயக்கவும்: npx prisma db execute --file [path_to_sql_file] • இயக்கவும்: npx prisma migrate resolve --applied [migration_name]

பிழை: Migration செயல்படுத்தப்பட்ட பிறகு மாற்றியமைக்கப்பட்டுள்ளது (Checksum mismatch) • உங்கள் தற்போதைய migration கோப்பின் SHA-256 hash-ஐக் கணக்கிடுங்கள். • _prisma_migrations அட்டவணையில் checksum-ஐப் புதுப்பிக்கவும். • முக்கியம்: அந்த migration பெயருக்கான அனைத்து வரிசைகளையும் (rows) புதுப்பிக்கவும். rolled_back_at மூலம் வடிகட்ட வேண்டாம்.

பிழை: Shadow database column காணவில்லை (P3006) • ஒரு migration, அதற்குப் பிந்தைய migration மூலம் உருவாக்கப்படும் ஒரு column-ஐக் குறிப்பிடும்போது இது நிகழ்கிறது. • Prisma migration-களை timestamp வரிசைப்படி மீண்டும் இயக்குகிறது. • தீர்வு: அந்த column முதன்முதலில் உருவாக்கப்படும் migration-க்கு SQL குறியீட்டை மாற்றவும்.

பிழை: RLS policy மூலம் DROP COLUMN தடுக்கப்பட்டுள்ளது • PostgreSQL Row Level Security கொள்கைகளை (policies) column-களுடன் இணைக்கிறது. • தீர்வு: Column-களை நீக்கும்போது (dropping) CASCADE என்பதைப் பயன்படுத்தவும். • உதாரணம்: ALTER TABLE "my_table" DROP COLUMN IF EXISTS "tenant_id" CASCADE;

பாதுகாப்பான Migrations-க்கான சிறந்த நடைமுறைகள்

  • முதலில் தரவுத்தளத்தைக் (database) கண்டறியவும். ஒரு column அல்லது index இருக்கிறதா என்று யூகிக்க வேண்டாம். Migration குறியீட்டை எழுதுவதற்கு முன், உங்கள் உண்மையான database schema-வைச் சரிபார்க்க நேரடி SQL queries-களைப் பயன்படுத்தவும்.
  • IF EXISTS மற்றும் IF NOT EXISTS ஆகியவற்றைப் பயன்படுத்தவும். இது உங்கள் migrations-ஐ idempotent ஆக்கும். ஒரு idempotent migration பிழைகள் இன்றி பலமுறை இயங்க முடியும்.
  • Constraints-களுக்கு DO blocks-களைப் பயன்படுத்தவும். Foreign Key-களைச் சேர்க்கும்போது, அந்த constraint பெயர் ஏற்கனவே உள்ளதா என்பதைச் சரிபார்க்கும் ஒரு check-க்குள் அதைச் சுற்றவும் (wrap).
  • நீங்கள் Row Level Security பயன்படுத்தினால், நீக்கும்போது (drops) எப்போதும் CASCADE என்பதைப் பயன்படுத்தவும்.

சுருக்க அட்டவணை

P3018 (Failed mid-run): SQL-ஐச் சரிசெய்து, பின் resolve --rolled-back மற்றும் resolve --applied ஆகியவற்றைப் பயன்படுத்தவும். • Checksum mismatch: புதிய hash-ஐக் கணக்கிட்டு _prisma_migrations-இல் உள்ள அனைத்து வரிசைகளையும் புதுப்பிக்கவும். • Shadow DB error: உங்கள் timestamp வரிசையைச் சரிபார்த்து SQL logic-ஐ மாற்றவும். • RLS error: உங்கள் DROP அறிக்கைகளில் (statements) CASCADE-ஐச் சேர்க்கவும்.

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