From 3a435f7057ac4e48945bd1b3a4efea0397f026a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E0=A4=95=E0=A4=BE=E0=A4=B0=E0=A4=A4=E0=A5=8B=E0=A4=AB?= =?UTF-8?q?=E0=A5=8D=E0=A4=AB=E0=A5=87=E0=A4=B2=E0=A4=B8=E0=A5=8D=E0=A4=95?= =?UTF-8?q?=E0=A5=8D=E0=A4=B0=E0=A4=BF=E0=A4=AA=E0=A5=8D=E0=A4=9F=E2=84=A2?= Date: Tue, 7 Feb 2023 15:14:59 +0100 Subject: [PATCH] fix(core): Disable transactions on sqlite migrations that use `PRAGMA foreign_keys` (#5392) `PRAGMA foreign_keys` is [a no-op within a sqlite transaction](https://www.sqlite.org/pragma.html#pragma_foreign_keys). This causes cascade deletes to happen when we create a new user table, and drop the old user table. --- .../migrations/sqlite/1652367743993-AddUserSettings.ts | 2 ++ .../migrations/sqlite/1652905585850-AddAPIKeyColumn.ts | 3 +++ .../sqlite/1673268682475-DeleteExecutionsWithWorkflows.ts | 3 +++ 3 files changed, 8 insertions(+) diff --git a/packages/cli/src/databases/migrations/sqlite/1652367743993-AddUserSettings.ts b/packages/cli/src/databases/migrations/sqlite/1652367743993-AddUserSettings.ts index 780a4cc644..111e3545bc 100644 --- a/packages/cli/src/databases/migrations/sqlite/1652367743993-AddUserSettings.ts +++ b/packages/cli/src/databases/migrations/sqlite/1652367743993-AddUserSettings.ts @@ -5,6 +5,8 @@ import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class AddUserSettings1652367743993 implements MigrationInterface { name = 'AddUserSettings1652367743993'; + transaction = false; + public async up(queryRunner: QueryRunner): Promise { logMigrationStart(this.name); diff --git a/packages/cli/src/databases/migrations/sqlite/1652905585850-AddAPIKeyColumn.ts b/packages/cli/src/databases/migrations/sqlite/1652905585850-AddAPIKeyColumn.ts index 0013980a9a..3ec1d85c98 100644 --- a/packages/cli/src/databases/migrations/sqlite/1652905585850-AddAPIKeyColumn.ts +++ b/packages/cli/src/databases/migrations/sqlite/1652905585850-AddAPIKeyColumn.ts @@ -1,9 +1,12 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; import config from '@/config'; import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; + export class AddAPIKeyColumn1652905585850 implements MigrationInterface { name = 'AddAPIKeyColumn1652905585850'; + transaction = false; + async up(queryRunner: QueryRunner): Promise { logMigrationStart(this.name); diff --git a/packages/cli/src/databases/migrations/sqlite/1673268682475-DeleteExecutionsWithWorkflows.ts b/packages/cli/src/databases/migrations/sqlite/1673268682475-DeleteExecutionsWithWorkflows.ts index 448a29b9b2..d9f0fd2d6c 100644 --- a/packages/cli/src/databases/migrations/sqlite/1673268682475-DeleteExecutionsWithWorkflows.ts +++ b/packages/cli/src/databases/migrations/sqlite/1673268682475-DeleteExecutionsWithWorkflows.ts @@ -3,6 +3,9 @@ import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/mi export class DeleteExecutionsWithWorkflows1673268682475 implements MigrationInterface { name = 'DeleteExecutionsWithWorkflows1673268682475'; + + transaction = false; + public async up(queryRunner: QueryRunner): Promise { logMigrationStart(this.name); const tablePrefix = getTablePrefix();