From f0beb3ab80901d0f68290dad2cd543022e116e85 Mon Sep 17 00:00:00 2001 From: Maxime Beauchemin Date: Tue, 28 Aug 2018 11:08:47 -0700 Subject: [PATCH] Silence error on migration 4736ec66ce19 constraint drop (#5729) * Silence error on migration 4736ec66ce19 constraint drop * typo + lint --- superset/migrations/versions/4736ec66ce19_.py | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/superset/migrations/versions/4736ec66ce19_.py b/superset/migrations/versions/4736ec66ce19_.py index 280132d61e..4cb79595fb 100644 --- a/superset/migrations/versions/4736ec66ce19_.py +++ b/superset/migrations/versions/4736ec66ce19_.py @@ -7,13 +7,10 @@ Create Date: 2017-10-03 14:37:01.376578 """ -# revision identifiers, used by Alembic. -revision = '4736ec66ce19' -down_revision = 'f959a6652acd' +import logging from alembic import op import sqlalchemy as sa -from sqlalchemy.exc import OperationalError from superset.utils import ( generic_find_fk_constraint_name, @@ -21,6 +18,9 @@ from superset.utils import ( generic_find_uq_constraint_name, ) +# revision identifiers, used by Alembic. +revision = '4736ec66ce19' +down_revision = 'f959a6652acd' conv = { 'fk': 'fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s', @@ -101,16 +101,24 @@ def upgrade(): batch_op.drop_column('datasource_name') - # Drop the old more restrictive uniqueness constraint. - with op.batch_alter_table('datasources', naming_convention=conv) as batch_op: - batch_op.drop_constraint( - generic_find_uq_constraint_name( - 'datasources', - {'datasource_name'}, - insp, - ) or 'uq_datasources_datasource_name', - type_='unique', - ) + try: + # Drop the old more restrictive uniqueness constraint. + with op.batch_alter_table('datasources', naming_convention=conv) as batch_op: + batch_op.drop_constraint( + generic_find_uq_constraint_name( + 'datasources', + {'datasource_name'}, + insp, + ) or 'uq_datasources_datasource_name', + type_='unique', + ) + except Exception as e: + logging.warning( + 'Constraint drop failed, you may want to do this ' + 'manually on your database. For context, this is a known ' + 'issue around undeterministic contraint names on Postgres ' + 'and perhaps more databases through SQLAlchemy.') + logging.exception(e) def downgrade():