我正在尝试使用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/

10-09 08:49