我正在尝试使用golang建立与Db2数据库的连接。我正在使用package建立连接,并使用名为v10.1fp6_ntx64_odbc_cli
的Db2客户端。
但是,当我看到有关phiggins软件包的说明时,建议在提供少量环境变量后重新构建软件包
#!/bin/bash
DB2HOME=$HOME/sqllib
export CGO_LDFLAGS=-L$DB2HOME/lib
export CGO_CFLAGS=-I$DB2HOME/include
go build .
我是golang的新手,不确定如何在Windows上执行此操作。我尝试使用设置环境变量来执行此操作,但是不起作用。出错
panic:无法加载db2cli64.dll:找不到指定的模块。
goroutine 1 [运行中]:
系统调用。(* LazyProc).mustFind(0xc000060270)
C:/Go/src/syscall/dll_windows.go:280 + 0x5f
系统调用。(* LazyProc).Addr(0xc000060270,0x64)
C:/Go/src/syscall/dll_windows.go:287 + 0x32
bitbucket.org/phiggins/db2cli/api.SQLAllocHandle(0x4f0001、0x0、0xc000071ef8、0xc000071f00)
C:/用户/myuser/go/src/bitbucket.org/phiggins/db2cli/api/zapi_windows.go:44 + 0x34
bitbucket.org/phiggins/db2cli.initDriver(0x0,0x0)
C:/用户/myuser/go/src/bitbucket.org/phiggins/db2cli/driver.go:26 + 0x57
bitbucket.org/phiggins/db2cli.init.0()
C:/用户/myuser/go/src/bitbucket.org/phiggins/db2cli/driver.go:52 + 0x29
退出状态2
请帮助我解决此问题,希望使用golang连接到Db2数据库。
最佳答案
以下步骤使我可以从Windows7 pro x64上的golang连接到Db2。
你的旅费可能会改变。
我使用了一个用于Windows x64的最新“Db2 Runtime Client”软件包,可以从IBM网站下载(在我的情况下是11.1.3.3b版),我下载的文件名为v11.1.3fp3b_ntx64_rtcl.exe
。
它在本地安装在"c:\Program Files\IBM\sqllib"
位置(默认)。
我已经在Windows7上安装了适用于其他项目的gcc(可能来自minGW)。
我在db2cmd.exe窗口中进行了验证,我可以使用特定的端口号和特定的凭据通过CLP(使用CLI)成功连接到感兴趣的数据库。这样,我知道Db2客户端已正确安装,并且Db2服务器正在运行,数据库可用,并且凭据和端口都可以。
以本地管理员身份运行,从golang.org/dl下载到默认位置c:\go
的msi文件安装了go for Windows。
从https://bitbucket.org/phiggins/db2cli下载的phiggins-db2cli-*.zip
创建的本地目录:mkdir %userprofile%\go\src\bitbucket.org\phiggins\db2cli
将phiggins-db2cli-*。zip的内容解压缩为%userprofile%\go\src\bitbucket.org\phiggins\db2cli
在以管理员身份运行的db2cmd.exe窗口中:
cd %userprofile%\go\src\bitbucket.org\phiggins\db2cli
创建了具有以下内容的批处理文件
buildgo.bat
:set DB2HOME="C:\program files\ibm\sqllib"
set CGO_LDFLAGS=-L"C:\Program Files\IBM\sqllib\lib"
set CGO_CFLAGS=-I"C:\Program Files\IBM\sqllib\include"
go build .
在以管理员身份运行的db2cmd窗口中,运行批处理文件,该文件已完成,没有错误或错误级别为0的消息。
在同一db2cmd窗口中,创建一个文件,该文件包含https://bitbucket.org/phiggins/db2cli中显示的示例程序。
我创建的文件称为
testgo.go
然后,我执行示例程序:
go run testgo.co -conn DATABASE=sample;HOSTNAME=whatever;PORT=60000;UID=whatever;PWD=whatever;
->成功在屏幕上获取结果集
关于go - 使用Windows使用Golang与db2服务器连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53478613/