From 34782fcafbf759ae3c2ba5f3d3d6d2d1144f0289 Mon Sep 17 00:00:00 2001 From: wjk <1471511095@qq.com> Date: Tue, 28 Jul 2026 17:19:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(data-gateway):=20MySQL/MariaDB=20=E5=8F=AA?= =?UTF-8?q?=E8=AF=BB=E4=BA=8B=E5=8A=A1=E9=A1=BB=E5=85=88=20SET=20=E5=86=8D?= =?UTF-8?q?=20BEGIN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MySQL/MariaDB 要求 SET TRANSACTION 在事务开始前执行; 原先 beginTransaction 后再 SET 会导致数据源 test 失败。 Fixes #91 --- packages/data-gateway/src/adapters/sql-family-adapters.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/data-gateway/src/adapters/sql-family-adapters.ts b/packages/data-gateway/src/adapters/sql-family-adapters.ts index 83e9999e..4970d547 100644 --- a/packages/data-gateway/src/adapters/sql-family-adapters.ts +++ b/packages/data-gateway/src/adapters/sql-family-adapters.ts @@ -127,8 +127,9 @@ export class MySqlAdapter implements DataSourceAdapter { }; try { signal?.addEventListener("abort", abort, { once: true }); - await connection.beginTransaction(); + // SET TRANSACTION must run before a transaction starts (MySQL/MariaDB). await connection.query("SET TRANSACTION READ ONLY"); + await connection.beginTransaction(); const [rows] = await connection.query(sql, values); await connection.rollback(); return rows.filter(isRecord);