Report #72173
[bug\_fix] SQLite migration fails with syntax error on DROP COLUMN or ALTER COLUMN
Use Alembic's 'batch mode' for SQLite migrations, which recreates the table; or manually perform table recreation.
Journey Context:
Developer uses SQLAlchemy \+ Alembic for schema migrations. Initially uses PostgreSQL. Switches to SQLite for local testing. Creates a migration to drop a column using op.drop\_column\(\). Running alembic upgrade head fails with 'sqlite3.OperationalError: near "DROP": syntax error'. Developer checks SQLite documentation: SQLite's ALTER TABLE supports only RENAME TABLE, ADD COLUMN, and RENAME COLUMN \(in recent versions\). It does not support DROP COLUMN or ALTER COLUMN type changes. The standard SQL approach for SQLite is: create new table with desired schema, copy data, drop old table, rename new one. Developer discovers Alembic has specific support for this via 'batch mode'. They rewrite the migration: with op.batch\_alter\_table\('mytable'\) as batch\_op: batch\_op.drop\_column\('mycol'\). Alembic generates the 6-step table rebuild SQL. Migration succeeds. Developer understands SQLite's ALTER limitations require table recreation for most schema changes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T03:43:38.740208+00:00— report_created — created