Jak dodać element do pola wyliczenia w migracji alembiku, gdy używana jest wersja PostgreSQL starsza niż 9.1 (która dodaje TYP ALTER dla wyliczenia)? This Pytanie SO wyjaśnia bezpośredni proces, ale nie jestem do końca pewien, jak najlepiej przetłumaczyć to przy użyciu alembika.Zmiana pola wyliczeniowego przy użyciu Alembic
To jest to, co mam:
new_type = sa.Enum('nonexistent_executable', 'output_limit_exceeded',
'signal', 'success', 'timed_out', name='status')
old_type = sa.Enum('nonexistent_executable', 'signal', 'success', 'timed_out',
name='status')
tcr = sa.sql.table('testcaseresult',
sa.Column('status', new_type, nullable=False))
def upgrade():
op.alter_column('testcaseresult', u'status', type_=new_type,
existing_type=old_type)
def downgrade():
op.execute(tcr.update().where(tcr.c.status==u'output_limit_exceeded')
.values(status='timed_out'))
op.alter_column('testcaseresult', u'status', type_=old_type,
existing_type=new_type)
Powyższy niestety tylko produkuje ALTER TABLE testcaseresult ALTER COLUMN status TYPE status
po uaktualnieniu, które w zasadzie nic nie robi.
Działa z alembikami 0.7 i Postgres 9.4. PITA musi to zrobić w ten sposób. Zdecydowanie mam nadzieję, że nie będę musiał dokonywać żadnych zmian w moich ENUM-ach! –
@ Two-BitAlchemist - czy widzisz http://stackoverflow.com/a/16821396/176978? W PostgreSQL 9.4 powinieneś być w stanie zrobić to znacznie prościej. – bboe
Tak, ale niestety, raczej zrzuciłem, niż dodałem, na które nie ma jeszcze wsparcia, [nawet w 9.4] (http://www.postgresql.org/docs/9.4/static/sql-altertype.html). –