猿问

Go lang 连接到 Oracle 9i(使用 go-oci8)

我有一个 32 位 Oracle DB(版本 9i - 9.2.0.7.0),一个 64 位 Mac,我正在尝试使用带有 Go Lang(版本 go1.11.1 darwin/amd64)的go-oci8连接到它。

我使用 SQL-Developer 4.0.2成功连接到数据库,然后使用教程通过它启用 InstantClient 连接。所以我已经从 Oracle 客户端运行了一些东西。

我正在为 MacOS(基本版和 SDK)使用 InstantClient 版本 11.2.0.4.0(32 位),我主要使用教程几乎成功。毕竟,我得到的错误是:

github.com/mattn/go-oci8 ld: warning: ignoring file /Users/myusername/Downloads/instantclient_11_2/libclntsh.dylib, file was built for i386 which is not the architecture being linked (x86_64): /Users/myusername/Downloads/instantclient_11_2/libclntsh.dylib Undefined symbols for architecture x86_64:

然后是一长串符号。基本上,Go oci8 库尝试使用 C(64 位)并尝试构建 64 位文件,然后 Go 将使用这些文件。如果我尝试使用 64 位版本的 InstantClient,我没有任何问题,但我收到“驱动程序:连接错误”错误,这是因为 64 位无法连接某些原因。

我不知道如何解决这个问题 - 我可以在使用时以某种方式强制构建 32 位文件吗go get -u -v github.com/mattn/go-oci8?或者以某种方式使 64 位 InstantClient 版本连接到旧的 32 位 Oracle 数据库?

非常感谢有关如何运行此程序的任何帮助。

编辑:我试过 10.2 Oracle Client,但我无法将它与 go-oci8 连接(我假设它不支持它)。我得到的错误是../github.com/mattn/go-oci8/oci8.go:113:25: could not determine kind of name for C.OCI_SYSASM

对有同样问题的人的最终编辑(进入一个非常古老的 Oracle 数据库)——你无法使用 Go 与现成的解决方案进行交互。列出的与 Oracle 一起使用的库与客户端版本 11.2 及更高版本一起运行。


拉风的咖菲猫
浏览 128回答 0
0回答
随时随地看视频慕课网APP

相关分类

Go
我要回答