首页 > 解决方案 > 关系“模型名称”已经存在

问题描述

我在尝试运行时收到此错误flask run upgrade

INFO  [alembic.runtime.migration] Running upgrade cfe118c893d3 -> 50e7b9875dec, empty message
Traceback (most recent call last):
  File ".../lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1277, in _execute_context
    cursor, statement, parameters, context
  File ".../lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 593, in do_execute
    cursor.execute(statement, parameters)
psycopg2.ProgrammingError: relation "ix_UmbrellaPolicy_policy_id" already exists


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File ".../manage.py", line 70, in <module>
    manager.run()
  File ".../lib/python3.6/site-packages/flask_script/__init__.py", line 417, in run
    result = self.handle(argv[0], argv[1:])
  File ".../lib/python3.6/site-packages/flask_script/__init__.py", line 386, in handle
    res = handle(*args, **config)
  File ".../lib/python3.6/site-packages/flask_script/commands.py", line 216, in __call__
    return self.run(*args, **kwargs)
  File ".../lib/python3.6/site-packages/flask_migrate/__init__.py", line 259, in upgrade
    command.upgrade(config, revision, sql=sql, tag=tag)
  File ".../lib/python3.6/site-packages/alembic/command.py", line 254, in upgrade
    script.run_env()
  File ".../lib/python3.6/site-packages/alembic/script/base.py", line 425, in run_env
    util.load_python_file(self.dir, 'env.py')
  File ".../lib/python3.6/site-packages/alembic/util/pyfiles.py", line 81, in load_python_file
    module = load_module_py(module_id, path)
  File ".../lib/python3.6/site-packages/alembic/util/compat.py", line 83, in load_module_py
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "migrations/env.py", line 97, in <module>
    run_migrations_online()
  File "migrations/env.py", line 89, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File ".../python3.6/site-packages/alembic/runtime/environment.py", line 836, in run_migrations
    self.get_context().run_migrations(**kw)
  File ".../lib/python3.6/site-packages/alembic/runtime/migration.py", line 330, in run_migrations
    step.migration_fn(**kw)
  File ".../migrations/versions/50e7b9875dec_.py", line 21, in upgrade
    op.create_index(op.f('ix_UmbrellaPolicy_policy_id'), 'UmbrellaPolicy', ['policy_id'], unique=False)
  File "<string>", line 8, in create_index
  File "<string>", line 3, in create_index
  File ".../lib/python3.6/site-packages/alembic/operations/ops.py", line 857, in create_index
    return operations.invoke(op)
  File ".../lib/python3.6/site-packages/alembic/operations/base.py", line 319, in invoke
    return fn(self, operation)
  File ".../lib/python3.6/site-packages/alembic/operations/toimpl.py", line 88, in create_index
    operations.impl.create_index(idx)
  File ".../lib/python3.6/site-packages/alembic/ddl/impl.py", line 206, in create_index
    self._exec(schema.CreateIndex(index))
  File ".../lib/python3.6/site-packages/alembic/ddl/impl.py", line 118, in _exec
    return conn.execute(construct, *multiparams, **params)
  File ".../lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
    return meth(self, multiparams, params)
  File ".../lib/python3.6/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File ".../lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1073, in _execute_ddl
    compiled,
  File ".../lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1317, in _execute_context
    e, statement, parameters, cursor, context
  File ".../lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1511, in _handle_dbapi_exception
    sqlalchemy_exception, with_traceback=exc_info[2], from_=e
  File ".../lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File ".../lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1277, in _execute_context
    cursor, statement, parameters, context
  File ".../lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 593, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "ix_UmbrellaPolicy_policy_id" already exists

[SQL: CREATE INDEX "ix_UmbrellaPolicy_policy_id" ON "UmbrellaPolicy" (policy_id)]
(Background on this error at: http://sqlalche.me/e/13/f405)

Process finished with exit code 1

我最新的迁移文件是这样的

revision = '50e7b9875dec'
down_revision = 'cfe118c893d3'
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_index(op.f('ix_UmbrellaPolicy_policy_id'), 'UmbrellaPolicy', ['policy_id'], unique=False)
    op.drop_index('ix_UmbrellaPolicy_policy_id', table_name='UmbrellaPolicy')
    op.create_index(op.f('ix_UmbrellaSite_site_id'), 'UmbrellaSite', ['site_id'], unique=False)
    op.drop_index('ix_UmbrellaSite_site_id', table_name='UmbrellaSite')
    op.create_index(op.f('ix_UmbrellaTunnel_tunnel_id'), 'UmbrellaTunnel', ['tunnel_id'], unique=False)
    op.drop_index('ix_UmbrellaTunnel_tunnel_id', table_name='UmbrellaTunnel')
    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_index('ix_UmbrellaTunnel_tunnel_id', 'UmbrellaTunnel', ['tunnel_id'], unique=False)
    op.drop_index(op.f('ix_UmbrellaTunnel_tunnel_id'), table_name='UmbrellaTunnel')
    op.create_index('ix_UmbrellaSite_site_id', 'UmbrellaSite', ['site_id'], unique=False)
    op.drop_index(op.f('ix_UmbrellaSite_site_id'), table_name='UmbrellaSite')
    op.create_index('ix_UmbrellaPolicy_policy_id', 'UmbrellaPolicy', ['policy_id'], unique=False)
    op.drop_index(op.f('ix_UmbrellaPolicy_policy_id'), table_name='UmbrellaPolicy')
    # ### end Alembic commands ###

我可以做些什么来防止此错误并成功运行此升级?:( 如果我需要在此处发布任何其他文件以捕获此错误,请让我知道,因为我是烧瓶新手,不知道为什么我会遇到这个问题。

标签: flaskflask-sqlalchemyflask-restful

解决方案


推荐阅读