diff --git a/alembic/versions/a192abbf4091_add_manufacturers_table.py b/alembic/versions/a192abbf4091_add_manufacturers_table.py index 9d933f2..af18123 100644 --- a/alembic/versions/a192abbf4091_add_manufacturers_table.py +++ b/alembic/versions/a192abbf4091_add_manufacturers_table.py @@ -28,12 +28,19 @@ def upgrade() -> None: sa.Column("logo_url", sa.String(), nullable=True), sa.PrimaryKeyConstraint("id"), ) + # batch_alter_table's alter_column doesn't emit CREATE TYPE for the new + # Enum on its own (unlike create_table, which ties enum creation to the + # table-create DDL event) - create it explicitly first, or Postgres fails + # with `type "uncseries" does not exist`. checkfirst / no-op on SQLite. + uncseries = sa.Enum("UNC", "UNF", "UNEF", "UN", "UNS", name="uncseries") + uncseries.create(op.get_bind(), checkfirst=True) with op.batch_alter_table("unc_threads", schema=None) as batch_op: batch_op.alter_column( "series", existing_type=sa.VARCHAR(length=8), - type_=sa.Enum("UNC", "UNF", "UNEF", "UN", "UNS", name="uncseries"), + type_=uncseries, existing_nullable=False, + postgresql_using="series::uncseries", ) # ### end Alembic commands ### @@ -47,7 +54,9 @@ def downgrade() -> None: existing_type=sa.Enum("UNC", "UNF", "UNEF", "UN", "UNS", name="uncseries"), type_=sa.VARCHAR(length=8), existing_nullable=False, + postgresql_using="series::varchar(8)", ) + sa.Enum(name="uncseries").drop(op.get_bind(), checkfirst=True) op.drop_table("manufacturers") # ### end Alembic commands ###