Prisma Migration Conflicts ઉકેલવા માટેની માર્ગદર્શિકા
પ્રોડક્શન ડેટાબેઝ પર prisma migrate reset ચલાવશો નહીં.
જો તમે એવો સંદેશ જુઓ કે migration માં ફેરફાર કરવામાં આવ્યો છે અથવા તમારે schema રીસેટ કરવાની જરૂર છે, તો અટકી જાઓ. રીસેટ કરવાથી તમારો બધો ડેટા ડિલીટ થઈ જશે. તમે કંઈપણ ગુમાવ્યા વિના આ સંઘર્ષો (conflicts) ને મેન્યુઅલી ઉકેલી શકો છો.
સામાન્ય Prisma ભૂલો અને તેને કેવી રીતે સુધારવી
Error: Migration failed mid-run (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]
Error: Migration modified after it was applied (Checksum mismatch)
• તમારી વર્તમાન migration ફાઇલનો SHA-256 hash ગણો.
• _prisma_migrations ટેબલમાં checksum અપડેટ કરો.
• મહત્વપૂર્ણ: તે migration નામ માટેની બધી રો (rows) અપડેટ કરો. rolled_back_at દ્વારા ફિલ્ટર કરશો નહીં.
Error: Shadow database column missing (P3006) • આ ત્યારે થાય છે જ્યારે કોઈ migration એવી કોલમનો સંદર્ભ આપે છે જે પછીના migration દ્વારા બનાવવામાં આવે છે. • Prisma timestamp ના ક્રમમાં migrations ફરીથી ચલાવે છે. • સુધારો: SQL કોડને તે migration માં ખસેડો જ્યાં કોલમ પ્રથમ વખત બનાવવામાં આવે છે.
Error: DROP COLUMN blocked by RLS policy
• PostgreSQL Row Level Security પોલિસીઓને કોલમ સાથે જોડે છે.
• સુધારો: કોલમ ડ્રોપ કરતી વખતે CASCADE નો ઉપયોગ કરો.
• ઉદાહરણ: ALTER TABLE "my_table" DROP COLUMN IF EXISTS "tenant_id" CASCADE;
સુરક્ષિત Migrations માટે શ્રેષ્ઠ પદ્ધતિઓ
- પહેલા ડેટાબેઝ ક્વેરી કરો. કોલમ અથવા ઇન્ડેક્સ (index) અસ્તિત્વ ધરાવે છે કે નહીં તેનો અંદાજ ન લગાવો. Migration કોડ લખતા પહેલા તમારા વાસ્તવિક ડેટાબેઝ schema ની તપાસ કરવા માટે સીધી SQL ક્વેરીનો ઉપયોગ કરો.
IF EXISTSઅનેIF NOT EXISTSનો ઉપયોગ કરો. આ તમારા migrations ને idempotent બનાવે છે. એક idempotent migration ભૂલો પેદા કર્યા વિના અનેક વખત ચાલી શકે છે.- Constraints માટે
DOબ્લોક્સનો ઉપયોગ કરો. Foreign Key ઉમેરતી વખતે તે ચેક કરો કે constraint નામ પહેલેથી અસ્તિત્વ ધરાવે છે કે નહીં. - જો તમે Row Level Security નો ઉપયોગ કરતા હોવ, તો ડ્રોપ કરવા માટે હંમેશા
CASCADEનો ઉપયોગ કરો.
સારાંશ કોષ્ટક
• P3018 (Failed mid-run): SQL સુધારો, પછી resolve --rolled-back અને resolve --applied નો ઉપયોગ કરો.
• Checksum mismatch: નવો hash ગણો અને _prisma_migrations માં બધી રો અપડેટ કરો.
• Shadow DB error: તમારા timestamp ક્રમની તપાસ કરો અને SQL લોજિક ખસેડો.
• RLS error: તમારા DROP સ્ટેટમેન્ટ્સમાં CASCADE ઉમેરો.
