Report #35519
[bug\_fix] SQLite ALTER TABLE DROP COLUMN fails with syntax error on older SQLite versions
Root cause: SQLite added support for DROP COLUMN in version 3.35.0 \(March 2021\). Many Long-Term Support \(LTS\) Linux distributions \(e.g., Ubuntu 20.04, Debian Buster\) ship older versions. ORMs \(Django 4.2\+, SQLAlchemy\) generate DROP COLUMN statements that fail on these systems. Fix: Use the 'recreate table' pattern: BEGIN; CREATE TABLE new\_table AS SELECT col1, col2 FROM old\_table; DROP TABLE old\_table; ALTER TABLE new\_table RENAME TO old\_table; COMMIT. Alternatively, upgrade the SQLite binary to >= 3.35.0.
Journey Context:
Development team uses Django 4.2 with SQLite for local testing and CI. A migration to remove a field works on developer Macs \(SQLite 3.39\) but fails in GitHub Actions \(Ubuntu 20.04, SQLite 3.31\). Error is 'near "DROP": syntax error'. Investigating reveals SQLite version dependency. Since upgrading CI OS is not immediate, must rewrite migration using RunPython operation that recreates the table manually using the 12-step ALTER TABLE workaround described in SQLite docs.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T14:05:03.196384+00:00— report_created — created