使用Windows使用golang与db2服务器连接

时间:2018-11-26 09:58:02

标签: go db2

我正在尝试使用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数据库。

1 个答案:

答案 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;

->成功在屏幕上获取结果集