Skip to content

ALTER TYPE enum migrations fail in PostgreSQL #5290

@defrex

Description

@defrex

Bug description

Using migrations from version 2.14, I updated an enum to add a few more values.

That generated the following migration.

-- AlterEnum
ALTER TYPE "account_type_enum" ADD VALUE 'Giving';
ALTER TYPE "account_type_enum" ADD VALUE 'Parent';
ALTER TYPE "account_type_enum" ADD VALUE 'Saving';
ALTER TYPE "account_type_enum" ADD VALUE 'Spending';

-- AlterTable
ALTER TABLE "account" ALTER COLUMN "type" SET DEFAULT E'Spending';

Unfortunately, when running this, I get the following error from Postgres.

Database error: Error querying the database: db error: ERROR: ALTER TYPE ... ADD cannot run inside a transaction block
   0: sql_migration_connector::flavour::postgres::sql_schema_from_migration_history
             at migration-engine/connectors/sql-migration-connector/src/flavour/postgres.rs:174
   1: sql_migration_connector::sql_database_migration_inferrer::validate_migrations
             at migration-engine/connectors/sql-migration-connector/src/sql_database_migration_inferrer.rs:89
   2: migration_core::api::DiagnoseMigrationHistory
             at migration-engine/core/src/api.rs:109

I can confirm that reducing the migration to a single ALTER TYPE solves the issue.

How to reproduce

  1. Use Postgres
  2. Create an enum
  3. Add multiple new values
  4. Generate a migration
  5. Run the migration

Expected behavior

New enum values should be added.

Environment & setup

  • OS: Mac OS
  • Database: PostgreSQL 11
  • Node.js version: 4.15
  • Prisma version:
@prisma/cli          : 2.14.0
@prisma/client       : 2.14.0
Current platform     : darwin
Query Engine         : query-engine 5d491261d382a2a5ffdc71de17072b0e409f1cc1 (at node_modules/@prisma/engines/query-engine-darwin)
Migration Engine     : migration-engine-cli 5d491261d382a2a5ffdc71de17072b0e409f1cc1 (at node_modules/@prisma/engines/migration-engine-darwin)
Introspection Engine : introspection-core 5d491261d382a2a5ffdc71de17072b0e409f1cc1 (at node_modules/@prisma/engines/introspection-engine-darwin)
Format Binary        : prisma-fmt 5d491261d382a2a5ffdc71de17072b0e409f1cc1 (at node_modules/@prisma/engines/prisma-fmt-darwin)
Studio               : 0.332.0

Metadata

Metadata

Assignees

Labels

bug/2-confirmedBug has been reproduced and confirmed.kind/bugA reported bug.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions