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。
我选择了 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
我正在尝试连接到我工作的远程数据库,但是当我 运行 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。
我选择了 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