From d88b05a057ba3bb8be91b86b6362ec6219c9d82a Mon Sep 17 00:00:00 2001 From: Alejandro Ponce Date: Wed, 22 Jan 2025 10:21:16 +0200 Subject: [PATCH 1/2] Added transaction explicitly to migration --- .../2025_01_21_0820-4dec3e456c9e_add_on_delete_cascade.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/migrations/versions/2025_01_21_0820-4dec3e456c9e_add_on_delete_cascade.py b/migrations/versions/2025_01_21_0820-4dec3e456c9e_add_on_delete_cascade.py index 99a98404..5846b339 100644 --- a/migrations/versions/2025_01_21_0820-4dec3e456c9e_add_on_delete_cascade.py +++ b/migrations/versions/2025_01_21_0820-4dec3e456c9e_add_on_delete_cascade.py @@ -18,6 +18,9 @@ def upgrade() -> None: + # Begin transaction + op.execute("BEGIN TRANSACTION;") + # To add ON DELETE CASCADE to the foreign key constraint, we need to # rename the table, create a new table with the constraint, and copy # the data over. @@ -101,6 +104,9 @@ def upgrade() -> None: op.execute("CREATE INDEX idx_prompts_workspace_id ON prompts (workspace_id);") op.execute("CREATE INDEX idx_sessions_workspace_id ON sessions (active_workspace_id);") + # Finish transaction + op.execute("COMMIT;") + def downgrade() -> None: # Settings table From b54e139eb67703a52de7477aa1f05ff4ae88cf18 Mon Sep 17 00:00:00 2001 From: Alejandro Ponce Date: Wed, 22 Jan 2025 10:26:15 +0200 Subject: [PATCH 2/2] Added pragma=off on migration --- .../2025_01_21_0820-4dec3e456c9e_add_on_delete_cascade.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/migrations/versions/2025_01_21_0820-4dec3e456c9e_add_on_delete_cascade.py b/migrations/versions/2025_01_21_0820-4dec3e456c9e_add_on_delete_cascade.py index 5846b339..bb02d8cd 100644 --- a/migrations/versions/2025_01_21_0820-4dec3e456c9e_add_on_delete_cascade.py +++ b/migrations/versions/2025_01_21_0820-4dec3e456c9e_add_on_delete_cascade.py @@ -18,6 +18,9 @@ def upgrade() -> None: + # Turn off foreign key constraints for this migration + op.execute("PRAGMA foreign_keys=off;") + # Begin transaction op.execute("BEGIN TRANSACTION;") @@ -107,6 +110,10 @@ def upgrade() -> None: # Finish transaction op.execute("COMMIT;") + # Turn on foreign key constraints after the migration. Just to be sure. This shouldn't + # be necessary, since it should be specified at the beginning of every connection, doesn't hurt. + op.execute("PRAGMA foreign_keys=on;") + def downgrade() -> None: # Settings table