You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用alembic为Azure Synapse SQL DW做迁移时报事务不存在错误

错误原因
  • Azure Synapse Analytics 专用SQL池(原Azure Synapse DW)的事务机制与常规SQL Server存在差异,绝大多数DDL语句执行后会自动触发隐式事务提交。Alembic默认会开启顶层事务包裹所有迁移操作,当你执行create_table这类DDL语句时,Synapse已经自动将Alembic开启的事务提交关闭,后续Alembic尝试主动提交事务时就会找不到对应事务,抛出111214报错。
  • 默认SQLAlchemy pyodbc驱动的事务配置未适配Synapse特性,自动提交逻辑与Alembic的事务管理存在冲突。
解决方案

1. 调整Alembic全局事务配置

找到Alembic项目根目录下的env.py文件,修改run_migrations_online函数内的上下文配置,禁用全局事务包裹、开启自动提交:

def run_migrations_online():
    connectable = engine_from_config(
        config.get_section(config.config_ini_section),
        prefix="sqlalchemy.",
        poolclass=pool.NullPool,
    )

    with connectable.connect() as connection:
        context.configure(
            connection=connection,
            target_metadata=target_metadata,
            # 新增以下2行配置
            transaction_per_migration=False,
            autocommit=True
        )
        # 可选:如果修改后仍报错,可删除下方的事务包裹逻辑,直接执行context.run_migrations()
        with context.begin_transaction():
            context.run_migrations()

2. 调整数据库连接字符串

在alembic.ini的连接字符串末尾添加autocommit=True参数,适配Synapse的事务逻辑:

sqlalchemy.url = mssql+pyodbc:///?odbc_connect=Driver={ODBC Driver 17 for SQL Server};Server=tcp:{host},1433;Database={database};Uid=sqladminuser;Pwd={Password};Encrypt=yes;TrustServerCertificate=no;Connection+Timeout=30;autocommit=True;

3. 单迁移适配方案(可选)

如果仅部分迁移脚本涉及DDL操作需要适配,不需要修改全局配置,可以直接在对应迁移脚本的顶部添加配置,单独关闭当前迁移的事务管理:

from alembic import op
import sqlalchemy as sa

# 新增该行配置,开启自动提交
op.get_context().autocommit = True

def upgrade():
    op.create_table(
        'test',
        sa.Column('id', sa.Integer, primary_key=True),
        sa.Column('description', sa.String, nullable=False),
        sa.Column('source_type', sa.String, nullable=False),
        sa.Column('source_schema', sa.String, nullable=False),
        sa.Column('source_entity', sa.String, nullable=False),
    )

def downgrade():
    op.drop_table('test')

内容的提问来源于stack exchange,提问作者ASHISH M.G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:18:03