fix(sqlite): use correct SQLite syntax for migrations table #5219
+244
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #4928
This has already been tested on my own database and it did fix the issues I was having with migrations not being applied.
The __drizzle_migrations table was being created with PostgreSQL syntax (SERIAL PRIMARY KEY) instead of proper SQLite syntax (integer PRIMARY KEY AUTOINCREMENT).
While SQLite's flexible typing allowed the table to be created, the id column was stored with type "SERIAL" rather than "INTEGER", meaning it wouldn't behave as a proper auto-incrementing integer primary key.
Added tests to verify the migrations table schema uses correct SQLite syntax in all SQLite test files.
The tests were validated to indeed fail before this change.
As to existing deployments that have a broken migrations table we have four options as I see it:
At the moment this PR does 1+4, I can do 2/3 as well but I chose not to do it for the initial review part because I couldn't find existing examples where either option was chose.
Thanks for taking the time to review this.