From 13601ebe1d77f3d2cac25c8406f150d2b5e80c5f Mon Sep 17 00:00:00 2001
From: DengQingNian <117324885+DengQingNian@users.noreply.github.com>
Date: Sat, 10 Oct 2026 21:10:58 +0800
Subject: [PATCH] feat(schema-diff): add MySQL ignore foreign key checks deploy
option
---
.../components/diff/SchemaDiffDeployStep.vue | 12 ++
.../src/components/diff/SchemaDiffDialog.vue | 20 +++
.../__tests__/SchemaDiffDeployStep.spec.ts | 136 +++++++++++++++
.../i18n/__tests__/featureMessages.spec.ts | 1 +
apps/desktop/src/i18n/locales/az.ts | 2 +
apps/desktop/src/i18n/locales/en.ts | 2 +
apps/desktop/src/i18n/locales/es.ts | 2 +
apps/desktop/src/i18n/locales/id.ts | 2 +
apps/desktop/src/i18n/locales/it.ts | 2 +
apps/desktop/src/i18n/locales/ja.ts | 2 +
apps/desktop/src/i18n/locales/ko.ts | 2 +
apps/desktop/src/i18n/locales/pt-BR.ts | 2 +
apps/desktop/src/i18n/locales/ru.ts | 2 +
apps/desktop/src/i18n/locales/tr.ts | 2 +
apps/desktop/src/i18n/locales/zh-CN.ts | 2 +
apps/desktop/src/i18n/locales/zh-TW.ts | 2 +
apps/desktop/src/lib/schema/schemaDiff.ts | 7 +
crates/dbx-sql-schema/src/schema_diff.rs | 159 ++++++++++++++++++
crates/dbx-web/src/routes/schema_diff.rs | 4 +
docs/content/docs/schema-diff.cn.mdx | 2 +
docs/content/docs/schema-diff.mdx | 2 +
src-tauri/src/commands/schema_diff.rs | 4 +
22 files changed, 371 insertions(+)
create mode 100644 apps/desktop/src/components/diff/__tests__/SchemaDiffDeployStep.spec.ts
diff --git a/apps/desktop/src/components/diff/SchemaDiffDeployStep.vue b/apps/desktop/src/components/diff/SchemaDiffDeployStep.vue
index fee4af85f4..27f80300a3 100644
--- a/apps/desktop/src/components/diff/SchemaDiffDeployStep.vue
+++ b/apps/desktop/src/components/diff/SchemaDiffDeployStep.vue
@@ -48,11 +48,16 @@ const props = defineProps<{
missingRollbackObjects?: MissingRollbackObject[];
canExecute?: boolean;
destructiveStatementCount?: number;
+ /** Current value of the "ignore foreign key checks" deploy option. */
+ ignoreForeignKeyChecks?: boolean;
+ /** Whether the target database is MySQL, the only engine that gets the option. */
+ showIgnoreForeignKeyChecks?: boolean;
}>();
const emit = defineEmits<{
"update:deploySql": [sql: string];
"update:deploySqlMode": [mode: "forward" | "rollback"];
+ "update:ignoreForeignKeyChecks": [enabled: boolean];
back: [];
deploy: [];
}>();
@@ -383,6 +388,13 @@ function getObjectIconColor(kind: DiffObjectKind): string {
{{ t("diff.exportSql") }}
+
+