【问题标题】:Go lang connect to Oracle 9i (using go-oci8)Go lang 连接到 Oracle 9i(使用 go-oci8)
【发布时间】:2019-04-09 01:39:01
【问题描述】:

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

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

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

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 位无法连接某些原因。

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

任何有关如何运行此程序的帮助都将不胜感激。

编辑:我尝试了 10.2 Oracle 客户端,但我无法将它与 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 及更高版本上运行。

【问题讨论】:

    标签: oracle go oracle9i


    【解决方案1】:

    Oracle 客户端的架构必须与您的应用程序的架构相匹配。 IE。如果您的 Go Lang 是 64 位的,那么 Oracle 客户端也必须是 64 位的。数据库是 32 位还是 64 位都没有关系。

    我认为主要问题是,您无法将 Oracle 11.2 客户端连接到(20 岁!)Oracle 9i 数据库。

    查看Client / Server Interoperability Support Matrix for Different Oracle Versions (Doc ID 207303.1)了解详情。

    上面写着:

    对于 10.2(或更高版本)和 9.2 之间的连接,9.2 端必须是 在 9.2.0.4 或更高版本。 10.2(或更高版本)和 从未支持 9.2.0.1、9.2.0.2 或 9.2.0.3。

    您没有告诉我们您的 ar 使用的是哪个版本的“Oracle 9i”。

    【讨论】:

    • 版本为 9.2.0.7 。从那以后,我尝试使用 11.2 的 64 位版本,并且不断收到Error connecting to the database: driver: bad connection,所以我假设我需要低于 11.2 并尝试 10.2 并祈祷它可以工作。
    • 数据库升级怎么样?
    • 这是在工作中,但是是长期的解决方案。我希望有一种快速的方法来使用它,但我将不得不转向像 PHP 或 Python 这样的旧语言。经过你的评论和我晚上最后的挖掘,我相信没有 Go 包支持 Oracle 10.2 客户端版本。感谢您的帮助和阅读我的挣扎。
    猜你喜欢
    • 2014-04-08
    • 1970-01-01
    • 2015-12-21
    • 2019-08-03
    • 2018-10-21
    • 2015-12-27
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多