我正在尝试使用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上执行此操作。我尝试使用设置环境变量来执行此操作,但是不起作用。出现错误
紧急:无法加载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数据库。
答案 0 :(得分:0)
以下步骤使我可以从Windows7 pro x64上的golang连接到Db2。 你的旅费可能会改变。
我使用了可从IBM网站下载的用于Windows x64的最新“ Db2 Runtime Client”软件包(在我的情况下为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;
->成功在屏幕上获取结果集