Flask Migration:创建表和使用数据库中现有的Enum时出现问题。 `create_type = False`不起作用

我正在使用flask-migrate,SQLAlchemy和Alembic来管理我的数据库。我想在数据库中创建一个新表。新表具有使用现有Enum的列。我读过许多关于SO的问题,您可以使用带有Enum标志的现有create_type=False。这似乎对我不起作用。请参见下面我的修订文件中的upgrade()函数。

def upgrade():
    op.create_table(
        'label',sa.Column('id',UUID(as_uuid=True),default=uuid4),sa.Column('labelText',sa.Text,nullable=False),sa.Column('sourceCountry',sa.Enum('it','gb','gr','bg','pt',name='country',create_type=False),nullable=True),sa.PrimaryKeyConstraint('id'),sa.UniqueConstraint('id')

    )
    op.add_column('entity',sa.Column('labelId',UUID(as_uuid=True)))
    op.create_foreign_key(
        'fk_entity_label','entity','label',['labelId'],['id'],)

这是我的版本:

flask==1.1.1
flask-Ext==0.1
flask-Migrate==2.5.3
flask-script==2.0.6
flask-SQLAlchemy==2.4.1
alembic==1.4.1

我的错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.DuplicateObject) type "country" already exists

[SQL: CREATE TYPE country AS ENUM ('it','pt')]
(Background on this error at: http://sqlalche.me/e/f405)
pluto416500089 回答:Flask Migration:创建表和使用数据库中现有的Enum时出现问题。 `create_type = False`不起作用

发现了问题。我使用的是sqlalchemy.Enum(),而我应该使用的是postgres.ENUM()。改变使一切正常。

,

在烧瓶升级期间发生相同的错误。通过更改name属性,它可以很好地工作。

name = 'country' to name = 'country_name'

或 如果您将Postgres与pgadmin4一起使用,请删除“国家”类型的对象并重新运行。

本文链接:https://www.f2er.com/2616498.html

大家都在问