From d0c636283572d3c59c5d0a61a7a2bb18b986af18 Mon Sep 17 00:00:00 2001 From: Geeth Gunnampalli Date: Mon, 1 Dec 2025 17:58:26 -0600 Subject: [PATCH] Fix migration to check column existence before dropping Make migration 2264546da1d9 idempotent by checking if columns exist before attempting to drop them. This prevents failures when columns don't exist, fixing the Init:CrashLoopBackOff issue in Kubernetes deployments. --- .../2264546da1d9_simplify_alert_preferences.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/server/alembic/versions/2264546da1d9_simplify_alert_preferences.py b/server/alembic/versions/2264546da1d9_simplify_alert_preferences.py index f728710..6ea493a 100644 --- a/server/alembic/versions/2264546da1d9_simplify_alert_preferences.py +++ b/server/alembic/versions/2264546da1d9_simplify_alert_preferences.py @@ -20,13 +20,18 @@ def upgrade() -> None: """Upgrade schema.""" - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user_alert_preferences', schema=None) as batch_op: - batch_op.drop_column('alert_types') - batch_op.drop_column('email_min_severity') - batch_op.drop_column('disaster_types') + # Check if columns exist before dropping them (idempotent migration) + conn = op.get_bind() + inspector = sa.inspect(conn) + columns = [col["name"] for col in inspector.get_columns("user_alert_preferences")] - # ### end Alembic commands ### + with op.batch_alter_table('user_alert_preferences', schema=None) as batch_op: + if "alert_types" in columns: + batch_op.drop_column("alert_types") + if "email_min_severity" in columns: + batch_op.drop_column("email_min_severity") + if "disaster_types" in columns: + batch_op.drop_column("disaster_types") def downgrade() -> None: