# Troubleshooting (Prisma ORM v7) (/docs/orm/v7/prisma-migrate/workflows/troubleshooting) > For the complete Prisma documentation index, see [llms.txt](https://www.prisma.io/docs/llms.txt). A markdown version of any docs page is available by appending `.md` to its URL. Troubleshooting issues with Prisma Migrate in a development environment. Location: ORM > v7 > Prisma Migrate > Workflows > Troubleshooting This guide describes how to resolve issues with Prisma Migrate in a development environment, which often involves resetting your database. For production-focused troubleshooting, see: * [Production troubleshooting](https://www.prisma.io/docs/orm/v7/prisma-migrate/workflows/patching-and-hotfixing) * [Patching / hotfixing production databases](https://www.prisma.io/docs/orm/v7/prisma-migrate/workflows/patching-and-hotfixing) > [!WARNING] > This guide **does not apply for MongoDB**.
> Instead of `migrate dev`, [`db push`](https://www.prisma.io/docs/orm/v7/prisma-migrate/workflows/prototyping-your-schema) is used for [MongoDB](https://www.prisma.io/docs/orm/v7/core-concepts/supported-databases/mongodb). ## Handling migration history conflicts [#handling-migration-history-conflicts] A migration history conflict occurs when there are discrepancies between the **migrations folder in the file system** and the **`_prisma_migrations` table in the database**. #### Causes of migration history conflict in a development environment [#causes-of-migration-history-conflict-in-a-development-environment] * A migration that has already been applied is later modified * A migration that has already been applied is missing from the file system In a development environment, switching between feature branches can result in a history conflict because the `_prisma_migrations` table contains migrations from `branch-1`, and switching to `branch-2` might cause some of those migrations to disappear. > [!NOTE] > Note > > You should [never purposefully delete or edit a migration](https://www.prisma.io/docs/orm/v7/prisma-migrate/understanding-prisma-migrate/migration-histories#do-not-edit-or-delete-migrations-that-have-been-applied), as this might result in discrepancies between development and production. #### Fixing a migration history conflict in a development environment [#fixing-a-migration-history-conflict-in-a-development-environment] If Prisma Migrate detects a migration history conflict when you run `prisma migrate dev`, the CLI will ask to reset the database and reapply the migration history. ## Schema drift [#schema-drift] Database schema drift occurs when your database schema is out of sync with your migration history - the database schema has 'drifted away' from the source of truth. #### Causes of schema drift in a development environment [#causes-of-schema-drift-in-a-development-environment] Schema drift can occur if: * The database schema was changed *without* using migrations - for example, by using [`prisma db push`](https://www.prisma.io/docs/orm/v7/reference/prisma-cli-reference#db-push) or manually changing the database schema. > [!NOTE] > Note > > The [shadow database](https://www.prisma.io/docs/orm/v7/prisma-migrate/understanding-prisma-migrate/shadow-database) is required to detect schema drift, and can therefore only be done in a development environment. #### Fixing schema drift in a development environment [#fixing-schema-drift-in-a-development-environment] If you made manual changes to the database that you do not want to keep, or can replicate in the Prisma schema: * Reset your database: #### bun ```bash bunx prisma migrate reset ``` #### pnpm ```bash pnpm prisma migrate reset ``` #### yarn ```bash yarn prisma migrate reset ``` #### npm ```bash npx prisma migrate reset ``` * Replicate the changes in the Prisma schema and generate a new migration: #### bun ```bash bunx prisma migrate dev ``` #### pnpm ```bash pnpm prisma migrate dev ``` #### yarn ```bash yarn prisma migrate dev ``` #### npm ```bash npx prisma migrate dev ``` If you made manual changes to the database that you want to keep, you can: * Introspect the database: #### bun ```bash bunx prisma db pull ``` #### pnpm ```bash pnpm prisma db pull ``` #### yarn ```bash yarn prisma db pull ``` #### npm ```bash npx prisma db pull ``` Prisma will update your schema with the changes made directly in the database. * Generate a new migration to include the introspected changes in your migration history: #### bun ```bash bunx prisma migrate dev --name introspected_change ``` #### pnpm ```bash pnpm prisma migrate dev --name introspected_change ``` #### yarn ```bash yarn prisma migrate dev --name introspected_change ``` #### npm ```bash npx prisma migrate dev --name introspected_change ``` Prisma Migrate will prompt you to reset, then applies all existing migrations and a new migration based on the introspected changes. Your database and migration history are now in sync, including your manual changes. ## Failed migrations [#failed-migrations] #### Causes of failed migrations in a development environment [#causes-of-failed-migrations-in-a-development-environment] A migration might fail if: * You [modify a migration before running it](https://www.prisma.io/docs/orm/v7/prisma-migrate/workflows/customizing-migrations) and introduce a syntax error * You add a mandatory (`NOT NULL`) column to a table that already has data * The migration process stopped unexpectedly * The database shut down in the middle of the migration process Each migration in the `_prisma_migrations` table has a `logs` column that stores the error. #### Fixing failed migrations in a development environment [#fixing-failed-migrations-in-a-development-environment] The usual way to handle a failed migration in a development environment is to address the root cause and reset the database. For example: * If you introduced a SQL syntax error by manually editing the database, update the `migration.sql` file that failed and reset the database: #### bun ```bash bunx prisma migrate reset ``` #### pnpm ```bash pnpm prisma migrate reset ``` #### yarn ```bash yarn prisma migrate reset ``` #### npm ```bash npx prisma migrate reset ``` * If you introduced a change in the Prisma schema that cannot be applied to a database with data (for example, a mandatory column in a table with data): * Delete the `migration.sql` file. * Modify the schema - for example, add a default value to the mandatory field. * Migrate: #### bun ```bash bunx prisma migrate dev ``` #### pnpm ```bash pnpm prisma migrate dev ``` #### yarn ```bash yarn prisma migrate dev ``` #### npm ```bash npx prisma migrate dev ``` Prisma Migrate will prompt you to reset the database and re-apply all migrations. * If something interrupted the migration process, reset the database: #### bun ```bash bunx prisma migrate reset ``` #### pnpm ```bash pnpm prisma migrate reset ``` #### yarn ```bash yarn prisma migrate reset ``` #### npm ```bash npx prisma migrate reset ``` ## Prisma Migrate and PgBouncer [#prisma-migrate-and-pgbouncer] You might see the following error if you attempt to run Prisma Migrate commands in an environment that uses PgBouncer for connection pooling: ```bash Error: undefined: Database error Error querying the database: db error: ERROR: prepared statement "s0" already exists ``` See [Prisma Migrate and PgBouncer workaround](https://www.prisma.io/docs/orm/v7/prisma-client/setup-and-configuration/databases-connections/pgbouncer) for further information and a workaround. ## Related pages - [`Baselining a database`](https://www.prisma.io/docs/orm/v7/prisma-migrate/workflows/baselining): How to initialize a migration history for an existing database that contains important data. - [`Customizing migrations`](https://www.prisma.io/docs/orm/v7/prisma-migrate/workflows/customizing-migrations): How to edit a migration file before applying it to avoid data loss in production. - [`Development and production`](https://www.prisma.io/docs/orm/v7/prisma-migrate/workflows/development-and-production): How to use Prisma Migrate commands in development and production environments - [`Generating down migrations`](https://www.prisma.io/docs/orm/v7/prisma-migrate/workflows/generating-down-migrations): How to generate a down migration SQL file that reverses a given migration file - [`Native database functions`](https://www.prisma.io/docs/orm/v7/prisma-migrate/workflows/native-database-functions): How to enable PostgreSQL native database functions for projects that use Prisma Migrate.