Snowflake ODBC连接查询列数增加时触发SSL连接错误求助
Snowflake ODBC查询新增列时出现SSL连接错误的解决办法
问题描述
通过ODBC连接Snowflake时,查询3列数据正常,但新增任意列后执行查询出现以下错误:
ERROR [HY000] [Snowflake][Snowflake] (25)
Result download worker error: Worker error: [Snowflake][Snowflake] (4)
REST request for URL https://sfc-ie-ds1-7-customer-stage.s3.eu-west-1.amazonaws.com/xxx failed: CURLerror (curl_easy_perform() failed) - code=35 msg='SSL connect error' osCode=9 osMsg='Bad file descriptor'.
修复方案
1. 更新ODBC驱动至最新版本
旧版本驱动在处理大结果集(新增列后数据量增大)时可能存在SSL连接bug,直接下载并安装Snowflake官方提供的最新版ODBC驱动,覆盖现有安装。
2. 修改ODBC数据源配置参数
在ODBC数据源的配置界面或配置文件中,添加/调整以下参数:
DISABLE_IPV6=true:禁用IPv6解析,避免网络连接异常CLIENT_SESSION_KEEP_ALIVE=true:维持长连接,防止下载过程中连接断开CONNECT_TIMEOUT=600、REQUEST_TIMEOUT=600:延长连接和请求超时时间,给大结果集下载留足时间
3. 排查系统SSL与网络环境
- 确保系统根证书库是最新的:Linux执行
apt update && apt install ca-certificates(Debian/Ubuntu)或yum update ca-certificates(RHEL/CentOS);Windows通过系统更新安装最新根证书 - 检查防火墙、代理是否拦截了Snowflake的S3存储请求:新增列后结果集变大,会触发从S3下载数据,需确保
s3.eu-west-1.amazonaws.com的443端口SSL连接不受限制
4. 调整系统文件描述符限制
错误中的Bad file descriptor提示可能是系统文件描述符上限不足:
- Linux系统:临时执行
ulimit -n 4096提升当前会话的限制;永久修改则编辑/etc/security/limits.conf,添加* soft nofile 4096和* hard nofile 8192 - Windows系统:通过任务管理器查看当前ODBC进程的句柄使用情况,若接近上限,可通过组策略调整系统进程句柄限制
5. 优化查询减少结果集大小
- 新增
LIMIT子句测试小数据量,确认是否是数据量过大导致的问题 - 添加
WHERE条件过滤数据,缩小返回结果的范围,验证查询能否正常执行
内容的提问来源于stack exchange,提问作者Eoin2211
相关产品推荐
相关产品推荐

