DPI-1050:Oracle客户端库版本为0.0,但需要版本11.2或更高版本

问题描述 投票:0回答:2

我正在尝试连接到我的工作的远程数据库但是当我运行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和端口与真实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
2个回答
1
投票

我有完全相同的问题,我提到了你在这里链接的文件。我使用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位)。

然后我解压缩了即时客户端的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()

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.