There are two scenarios where you might consider deploying migrations directly from a local environment to a production environment.
- You have a local CI/CD pipeline
- You are baselining a production environment
This page outlines some examples of how you can do that and why we would generally not recommend it.
If you do not have an automated CI/CD process, you can technically deploy new migrations from your local environment to production in the following ways:
- Make sure your migration history is up to date. You can do this through running
prisma migrate dev, which will generate a migration history from the latest changes made.
- Swap your local connection string for your production connection string
-DATABASE_URL = 'postgresql://johndoe:randompassword@localhost:5432/my_local_database'2+DATABASE_URL = 'postgresql://johndoe:randompassword@localhost:5432/my_production_database'
prisma migrate deploy
- You risk exposing your production database connection string to version control.
- You may accidentally use your production connection string instead and in turn override or delete your production database.
The pipeline should handle deployment to staging and production environments, and use
migrate deploy in a pipeline step. See the deployment guides for examples.
When you add Prisma Migrate to an existing database, you must baseline the production database. Baselining is performed once, and can be done from a local instance.