【问题标题】:DPI-1050: Oracle Client library is at version 0.0 but version 11.2 or higher is neededDPI-1050:Oracle 客户端库的版本为 0.0,但需要 11.2 或更高版本
【发布时间】:2023-03-21 13:25:01
【问题描述】:

我正在尝试连接到我工作的远程数据库,但是当我运行 python 脚本时,它会显示此错误。

我已经做了所有事情this guide says I should have as requirements,但错误一直显示。我尝试通过 sql* 进行连接,它可以正常工作。我下载了 oracle 客户端库 12.2(32 位版本,因为它需要具有与 python 相同的架构),我正在使用 Oracle Database 11g 版本 11.2.0.3、Python 3.7,并且我已经安装了 Visual Studio Redistributable 2013。

这是我用来连接数据库的 python 脚本。显然,IP和端口与真实的不同,以及凭据。

import cx_Oracle

host='196.0.0.0'
port='8080'
service_name='SID'
pwd= 'PASS'

dsn_tns = cx_Oracle.makedsn(host,port,service_name)

connection = cx_Oracle.connect('user',pwd,dsn_tns)

每当我运行它时,即使 oracle 客户端库文件夹已经在我的计算机的 PATH 上,我也会收到错误消息。我必须从服务器端配置一些东西吗?感谢您的帮助!

【问题讨论】:

    标签: python oracle cx-oracle


    【解决方案1】:

    其实是版本问题。我在使用 19 版本时发现了同样的问题。当我将版本更改为 12.2 时,我已经解决了这个问题

    【讨论】:

      【解决方案2】:

      我遇到了完全相同的问题,我参考了您在此处链接的文档。我使用 PyCharm 作为 IDE 并使用 pycharm 使用的 python.exe,我发现它是 32 位的(只需单击 python.exe 和命令提示符,如屏幕打开,第一行告诉它是 32 位还是 64 位)。

      然后使用下面的链接,我下载了 Oracle Instant Client。

      https://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html

      我选择了 32 位和 12.2 版本(在撰写本文时最新版本是 v18.x)。这个 32 位必须与您的 python 版本相匹配(在我的情况下也是 32 位)。

      然后我把instant client的zip文件解压,放到C:\oracle文件夹下(放哪里都无所谓),我的目录结构是..

      C:\oracle\instantclient_12_2

      现在我将此位置作为 Windows 机器的“路径”系统环境变量中的第一个位置。

      做完这一切后,我重新启动机器(不需要)并使用pycharm并像这样连接......

      import cx_Oracle as cxo
      conn = cxo.connect("user_id", "password", "host_name:port_no/sid")
      print(conn.version)
      cur = conn.cursor()
      cur.execute('SELECT \'X\' FROM DUAL')
      for result in cur:
          print(result[0])
      cur.close()
      conn.close()
      

      【讨论】:

        【解决方案3】:

        您需要安装相同版本的 Python 和数据库客户端。 例如:64 位 python 和 64 位客户端或 32 位都可以工作。 我厌倦了 Oracle XE 18c 和 python-3.8.3-amd64.exe

        【讨论】:

          【解决方案4】:

          错误消息在 cx_Oracle 7.1 中得到了改进——但问题是已检测到旧版本(比 11.2)的 Oracle 客户端库。您需要确保正在检测您安装的较新版本。您可以通过确保您的 PATH 环境变量首先包含您的 12.2 客户端库来做到这一点。过去,旧版本的 Oracle 客户端库通常安装到 C:\windows\system32

          【讨论】:

          • 我再次检查了 PATH 似乎只安装了 12.2 客户端库,因此没有旧版本。
          • 在您的机器上搜索OCI.DLL。我相信您会在 PATH 环境变量中的某个位置找到另一个副本。
          【解决方案5】:

          问题可能与this issue 有关。
          简而言之:
          Windows 7 不支持 Oracle Instant Client 版本 19.3.0.0.0。
          Operating System Checklist for Oracle Database Client Installation中也提到了。

          【讨论】:

            【解决方案6】:

            我在使用 PyCharm 和 Selenium 的 Windows 10 上遇到了同样的问题 DPI-1050: Oracle Client library is at version 0.0 but version 11.2 or higher is needed

            我发现安装在我电脑中的应用程序包含oic.dll 文件。我知道该应用程序采用非常古老的技术,并且首先尝试使用它。将该文件重命名为其他文件,问题就解决了。与数据库连接成功

            就我而言,唯一的问题是下次我启动该应用程序时,它需要该文件,所以我需要将文件名改回oic.dll

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-02-08
              • 1970-01-01
              • 2020-04-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-05-27
              相关资源
              最近更新 更多