Drop constraint (#17275)

This commit is contained in:
Beto Dealmeida 2021-10-29 09:33:25 -07:00 committed by GitHub
parent fa44325a36
commit 8ee50deac6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 27 additions and 6 deletions

View File

@ -28,15 +28,36 @@ down_revision = "32646df09c64"
import sqlalchemy as sa
from alembic import op
from sqlalchemy.engine.reflection import Inspector
def upgrade():
with op.batch_alter_table("dbs") as batch_op:
batch_op.alter_column(
"allow_csv_upload",
new_column_name="allow_file_upload",
existing_type=sa.Boolean(),
)
try:
with op.batch_alter_table("dbs") as batch_op:
batch_op.alter_column(
"allow_csv_upload",
new_column_name="allow_file_upload",
existing_type=sa.Boolean(),
)
except sa.exc.OperationalError:
# In MySQL 8.0 renaming the column rename fails because it has
# a constraint check; we can safely remove it in that case, see
# https://github.com/sqlalchemy/alembic/issues/699
bind = op.get_bind()
inspector = Inspector.from_engine(bind)
check_constraints = inspector.get_check_constraints("dbs")
for check_constraint in check_constraints:
if "allow_csv_upload" in check_constraint["sqltext"]:
name = check_constraint["name"]
op.drop_constraint(name, table_name="dbs", type_="check")
# try again
with op.batch_alter_table("dbs") as batch_op:
batch_op.alter_column(
"allow_csv_upload",
new_column_name="allow_file_upload",
existing_type=sa.Boolean(),
)
def downgrade():