diff --git a/superset/migrations/shared/catalogs.py b/superset/migrations/shared/catalogs.py index 3f14598eb6e82..45d84e30365e3 100644 --- a/superset/migrations/shared/catalogs.py +++ b/superset/migrations/shared/catalogs.py @@ -505,7 +505,9 @@ def upgrade_schema_perms( .filter_by(name=current_perm) .one_or_none() ): - existing_pvm.name = new_perm + # check that new_perm does not exist + if not session.query(ViewMenu).filter_by(name=new_perm).one_or_none(): + existing_pvm.name = new_perm elif new_perm: # new schema discovered, need to create a new permission perms[new_perm] = ("schema_access",) @@ -683,7 +685,9 @@ def downgrade_schema_perms( None, schema, ) - pvms_to_rename.append((pvm, new_name)) + # check to see if the new name already exists + if not session.query(ViewMenu).filter_by(name=new_name).one_or_none(): + pvms_to_rename.append((pvm, new_name)) else: # non-default catalog, delete schema perm pvms_to_delete.append(pvm)