我有以下迁移:
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
try:
op.drop_index('idx_token_attribute_name', table_name='token_index')
except Exception:
logger = logging.getLogger()
logger.info('idx_token_attribute_name does not exist on token_index')
# ### end Alembic commands ###
我遇到的问题是,有时,索引并不存在。在这种情况下,我希望它安静地失败,并且仍然应用此迁移。然而,由于事务失败,而且它从不回滚,我得到以下错误:
(psycopg2.errors.InFailedSqlTransaction) current transaction is aborted, commands ignored until end of transaction block
如何忽略错误并应用迁移?
您可以使用v1.12.0及更高版本的标志if_exists=True
(alembic文档(。
def upgrade():
op.drop_index('idx_token_attribute_name', table_name='token_index', if_exists=True)