Windows下go-duckdb加载httpfs(s3)扩展失败的解决方案咨询
解决思路
1. 手动编译mingw平台的httpfs扩展
由于DuckDB v1.1.3官方未提供windows_amd64_mingw预编译的httpfs扩展,可自行编译:
- 安装编译依赖:mingw-w64工具链、CMake、Git
- 克隆DuckDB仓库并切换到v1.1.3标签:
git clone https://github.com/duckdb/duckdb.git && cd duckdb && git checkout v1.1.3 - 创建编译目录并配置CMake:
mkdir build && cd build && cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release - 编译httpfs扩展:
make -j4 extension_httpfs - 编译完成后,在
build/extension/httpfs路径下找到httpfs.duckdb_extension文件,在Go代码中直接加载本地扩展:db, err := duckdb.Open("") if err != nil { panic(err) } defer db.Close() _, err = db.Exec(`LOAD 'C:/your/path/to/httpfs.duckdb_extension';`) if err != nil { panic(err) }
2. 切换到兼容的DuckDB版本
检查DuckDB官方预编译扩展库,尝试升级/降级到提供windows_amd64_mingw平台httpfs扩展的版本(比如v1.1.2或最新稳定版v1.2.x):
- 修改go.mod中
github.com/marcboeker/go-duckdb的依赖版本,匹配目标DuckDB版本 - 重新执行
INSTALL s3; LOAD s3;命令
3. 强制适配rtools扩展(谨慎使用)
若必须使用v1.1.3,可尝试强制DuckDB识别当前平台为rtools:
- 设置环境变量
DUCKDB_PLATFORM=windows_amd64_rtools - 执行
INSTALL s3; LOAD s3;命令 - 注意:此方法可能引发兼容性问题,需充分测试运行稳定性
内容的提问来源于stack exchange,提问作者Antonija
相关产品推荐
相关产品推荐

