fix: export from SQLite fails to import into Postgres because of mismatched schemas

This commit is contained in:
Elias Schneider
2026-10-06 20:00:22 +02:00
parent 69065e7cf0
commit 8ab3dd437b
11 changed files with 956 additions and 11 deletions
@@ -0,0 +1,7 @@
ALTER TABLE audit_logs ALTER COLUMN created_at DROP NOT NULL;
ALTER TABLE audit_logs ALTER COLUMN user_agent DROP NOT NULL;
ALTER TABLE kv ALTER COLUMN value DROP NOT NULL;
ALTER TABLE oidc_clients ALTER COLUMN created_at DROP NOT NULL;
ALTER TABLE users ALTER COLUMN first_name DROP NOT NULL;
ALTER TABLE users ALTER COLUMN last_name DROP NOT NULL;
ALTER TABLE webauthn_credentials ALTER COLUMN created_at DROP NOT NULL;
@@ -0,0 +1,24 @@
-- Declare the columns that are NOT NULL on SQLite as NOT NULL too, so an export from either database can be imported into the other
-- The application never writes NULL into these columns, but backfill any NULL left over from older versions first
-- Empty strings are what the application writes for these values and what readers of kv treat as missing
UPDATE audit_logs SET created_at = now() WHERE created_at IS NULL;
ALTER TABLE audit_logs ALTER COLUMN created_at SET NOT NULL;
UPDATE audit_logs SET user_agent = '' WHERE user_agent IS NULL;
ALTER TABLE audit_logs ALTER COLUMN user_agent SET NOT NULL;
UPDATE kv SET value = '' WHERE value IS NULL;
ALTER TABLE kv ALTER COLUMN value SET NOT NULL;
UPDATE oidc_clients SET created_at = now() WHERE created_at IS NULL;
ALTER TABLE oidc_clients ALTER COLUMN created_at SET NOT NULL;
UPDATE users SET first_name = '' WHERE first_name IS NULL;
ALTER TABLE users ALTER COLUMN first_name SET NOT NULL;
UPDATE users SET last_name = '' WHERE last_name IS NULL;
ALTER TABLE users ALTER COLUMN last_name SET NOT NULL;
UPDATE webauthn_credentials SET created_at = now() WHERE created_at IS NULL;
ALTER TABLE webauthn_credentials ALTER COLUMN created_at SET NOT NULL;