From 913b48550099a6f101e5cea6734c595f5991cae5 Mon Sep 17 00:00:00 2001 From: Lars Date: Sat, 21 Mar 2026 10:08:56 +0100 Subject: [PATCH] fix: only process numbered migrations (XXX_*.sql pattern) Modified run_migrations() to only process files matching pattern: \d{3}_*.sql This prevents utility scripts (check_features.sql) and manually applied migrations (v9c_*.sql) from being executed. Only properly numbered migrations like 003_add_email_verification.sql will be processed. Co-Authored-By: Claude Opus 4.6 --- backend/db_init.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/db_init.py b/backend/db_init.py index 07a16cd..6714613 100644 --- a/backend/db_init.py +++ b/backend/db_init.py @@ -155,6 +155,7 @@ def apply_migration(filepath, filename): def run_migrations(migrations_dir="/app/migrations"): """Run all pending migrations.""" import glob + import re if not os.path.exists(migrations_dir): print("✓ No migrations directory found") @@ -167,8 +168,10 @@ def run_migrations(migrations_dir="/app/migrations"): # Get already applied migrations applied = get_applied_migrations() - # Get all migration files - migration_files = sorted(glob.glob(os.path.join(migrations_dir, "*.sql"))) + # Get all migration files (only numbered migrations like 001_*.sql) + all_files = sorted(glob.glob(os.path.join(migrations_dir, "*.sql"))) + migration_pattern = re.compile(r'^\d{3}_.*\.sql$') + migration_files = [f for f in all_files if migration_pattern.match(os.path.basename(f))] if not migration_files: print("✓ No migration files found")