我正在尝试在Alembic上创建一个新的迁移,它将一个新枚举类型的新列添加到现有表中。但我得到了一个错误,我以为Alembic会自动处理
我使用的是postgres9.6.6、alembic0.9.10和SQLAlchemy 1.2.9
我的剧本里有:
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column(
"task",
sa.Column(
"task_type",
sa.Enum(
"train", "predict", "refresh", name="tasktypeenum"
),
nullable=True,
),
)
# ### end Alembic commands ###
下面是我尝试应用此迁移脚本时堆栈跟踪的结尾(其余部分仅来自SQLAlchemy):
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) type "tasktypeenum" does not exist
LINE 1: ...task ADD COLUMN task_type tasktypeen...
^
[SQL: 'ALTER TABLE task ADD COLUMN task_type tasktypeenum'] (Background on this error at: http://sqlalche.me/e/f405)
但是,我们在旧的迁移文件中也有类似的语句,可以很好地工作。我看到的唯一区别是它们嵌套在op.create_table
中
我知道我可以通过做op.execute("CREATE TYPE ...")
来解决这个问题,但是我想知道是否有一个使用Alembic特性的解决方案
谢谢你的指导
目前没有回答
相关问题 更多 >
编程相关推荐