flask - 关系“模型名称”已经存在
问题描述
我在尝试运行时收到此错误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 ###
我可以做些什么来防止此错误并成功运行此升级?:( 如果我需要在此处发布任何其他文件以捕获此错误,请让我知道,因为我是烧瓶新手,不知道为什么我会遇到这个问题。
解决方案
推荐阅读
- java - 在 ScheduledExecutorService 中使用 Java 流 forEach() 冻结
- javascript - 在 Hybrid JS 中为 web 组件传递参数
- python - 如何使 urwid 为列提供比另一个更多的空间?
- c++ - 该程序运行没有错误,但它给出了错误的结果
- python - 如何使基于 sqlite3 的 python 模块将原始 sqlite3 命令打印为调试消息?
- apache-spark - 使用 v2 算法写入 Google Cloud Storage 安全吗?
- python - 从数据中获取最接近的时间
- python - 如何在python中将数组拆分为给定长度的块?
- r - R可以从谷歌地图获取特定区域的坐标吗?
- excel - Office 插件:Excel 深度优先搜索