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

Langchain连接Azure SQL Database失败,报HY104错误求解决

解决方案:Azure SQL Database连接Langchain SQLDatabase时HY104错误处理

问题原因

该错误源于SQLAlchemy绑定参数到NVARCHAR(max)类型时,ODBC Driver 17 for SQL Server对精度值的处理存在兼容性问题,具体触发在Langchain的SQLDatabase初始化查询元数据阶段。

可行解决方案

1. 给SQLAlchemy引擎添加fast_executemany=True参数

启用该参数可修复参数绑定的精度问题,修改引擎创建代码:

from sqlalchemy import create_engine
import os

driver = '{ODBC Driver 17 for SQL Server}'
odbc_str = 'mssql+pyodbc:///?odbc_connect=' \
                'Driver='+driver+ \
                ';Server=tcp:' + os.getenv("SQL_SERVER")+'.database.windows.net;PORT=1433' + \
                ';DATABASE=' + os.getenv("SQL_DB") + \
                ';Uid=' + os.getenv("SQL_USERNAME")+ \
                ';Pwd=' + os.getenv("SQL_PWD") + \
                ';Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;'

# 添加fast_executemany=True参数
db_engine = create_engine(odbc_str, fast_executemany=True)

2. 手动指定SQLDatabase要加载的表

跳过默认的全量元数据查询,直接指定需要操作的表,避免触发错误SQL语句:

from langchain.sql_database import SQLDatabase

# 替换为你实际需要的表名列表
target_tables = ["table1", "table2", "table3"]
db = SQLDatabase(db_engine, include_tables=target_tables)

3. 升级依赖包到最新版本

旧版本的pyodbc、SQLAlchemy或Langchain可能存在兼容性bug,执行以下命令升级:

pip install --upgrade pyodbc sqlalchemy langchain

4. 切换到ODBC Driver 18 for SQL Server

若上述方法无效,尝试更换为最新版ODBC驱动:

driver = '{ODBC Driver 18 for SQL Server}'
# 其余连接字符串保持不变

内容的提问来源于stack exchange,提问作者Lisa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:18:15