Prisma : Change Database
✅when i switch mySQL to postgreSQL then i have to run :
1.Remove-Item -Recurse -Force prisma\migrations
2.npx prisma migrate dev --name init-postgre
3. npx prisma generate
✅ when i switch postgreSQL to mongoDB then i have to run :
1.Remove-Item -Recurse -Force prisma\migrations
2. npx prisma db push
3. npx prisma generate
it is very confusing : why option 2 is different for these database ?
✅ কেন Option 2
আলাদা?
🔶 MySQL / PostgreSQL:
👉 SQL-based relational database
Prisma এই ডেটাবেসগুলোর জন্য Migration System ব্যবহার করে। কারণ:
ডেটাবেসে টেবিল, কলাম, constraint ইত্যাদি strict schema অনুযায়ী থাকে।
-
Prisma
.sql
ফাইল তৈরি করে এবং সেগুলো মাইগ্রেট করে ডেটাবেসে।
✅ এজন্য তোমাকে চালাতে হয়:
npx prisma migrate dev --name something
➡️ এটা prisma/migrations/
ফোল্ডারে মাইগ্রেশন তৈরি করে এবং ডেটাবেসে apply করে।
🟣 MongoDB:
👉 NoSQL, Schema-less Database
MongoDB-তে ডেটা ফরম্যাট flexible হয়, এবং strict schema enforce করা হয় না। তাই Prisma এখানে কোনো migration.sql
তৈরি করতে পারে না।
✅ এজন্য এখানে চালাতে হয়:
npx prisma db push
➡️ এটা শুধু Prisma-এর schema অনুযায়ী MongoDB-এর collection structure sync করে দেয় — কিন্তু কোনো migration history বা ফাইল রাখে না।
🔍 সংক্ষেপে পার্থক্য:
Database Type | Command | কারণ |
---|---|---|
MySQL / PostgreSQL | npx prisma migrate dev |
Schema migrate + Migration file তৈরি করে |
MongoDB | npx prisma db push |
কোনো migration file ছাড়াই সরাসরি schema sync করে দেয় |
✅ তোমার Workflow-টা যদি এমন হয়:
1. Remove-Item -Recurse -Force prisma\migrations
2. npx prisma migrate dev --name init-postgre
3. npx prisma generate
🔁 তখন তুমি SQL DB ব্যবহার করছো।
আর যখন:
1. Remove-Item -Recurse -Force prisma\migrations
2. npx prisma db push
3. npx prisma generate
🔁 তখন তুমি MongoDB ব্যবহার করছো।
✅ আমি সাজিয়ে দিচ্ছি একদম সহজভাবে মনে রাখার জন্য:
🔷 MySQL / PostgreSQL:
prisma migrate dev → কারণ: strict schema
🟣 MongoDB:
prisma db push → কারণ: schema-less, no migration