返回 Bug 清单
BUG-0310project-29高待处理database-schema

drizzle 用 db.execute(sql`BEGIN;`) 手写事务 —— postgres driver 不允许直接执行事务控制

发现:2026-10-01验证:2026-10-27置信度:70%

症状

账号合并(迁移 binds + 删旧用户)执行时事务控制语句报错或语义失效,多条写操作无原子性

根因

postgres-js 等 driver 的 execute 不支持手写 BEGIN/COMMIT 事务控制语句——事务必须由 driver 的事务 API 管理连接上下文,手动 BEGIN 只是往连接池里扔了一条孤立的 SQL

修复方案

改用 drizzle 的 db.transaction(async (tx) => {...}),事务内所有读写换用 tx 句柄

错误签名

db.execute BEGIN COMMIT drizzle transaction postgres driver 不允许直接 execute 事务控制

技术信息

来源项目

project-29

标签

project-29, mcp-reported