DPI-1050:Oracle Client 库的版本为 0.0,但需要 11.2 或更高版本

DPI-1050: Oracle Client library is at version 0.0 but version 11.2 or higher is needed

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

我已经完成了所有操作 this guide says I should have as requirements,但错误不断出现。我已尝试通过 sql* 进行连接,它可以正常工作。我下载了 Oracle 客户端库 12.2(32 位版本,因为它需要与 python 具有相同的体系结构),我正在使用 Oracle 数据库 11g 版本 11.2.0.3,Python 3.7,并且我已经安装了 Visual Studio 可再发行 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 中。我必须从服务器端配置一些东西吗?感谢您的帮助!

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

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

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

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

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

然后我解压了即时客户端的zip文件,把它放在C:\oracle文件夹(不管你放在哪里),我的目录结构是..

C:\oracle\instantclient_12_2

现在我把这个位置作为我 Windows 机器的 "Path" 系统环境变量中的第一个位置。

完成所有这些后,我重新启动机器(不需要)并使用 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()

其实是版本问题。我用19版本的时候发现了同样的问题,我把版本改成12.2

就解决了这个问题

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

我在 Windows 10 PyCharm 和 Selenium

上遇到了同样的问题 DPI-1050: Oracle Client library is at version 0.0 but version 11.2 or higher is needed

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

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

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