【问题标题】:cx_Oracle imports wrong modulecx_Oracle 导入错误的模块
【发布时间】:2016-01-22 02:43:42
【问题描述】:

我正在尝试连接到 Oracle DB v.9。我下载了最新的 Instant Client (12.1.0.2.0) + SDK,然后是 cx_Oracle。当尝试连接到数据库时,它说

cx_Oracle.DatabaseError: ORA-03134: Connections to this server version are no longer supported.

所以我尝试安装旧版本的 Instant Client 10.2.0.5:

sudo yum remove oracle-instantclient12.1-basic
sudo yum install /vagrant/oracle-instantclient-devel-10.2.0.5-1.x86_64.rpm

并更新了我的环境:

export ORACLE_HOME=/usr/lib/oracle/10.2.0.5/client64/
export LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.5/client64/lib/

但是当我尝试运行我的 Python 脚本时,cx_Oracle 会说:

ImportError: libclntsh.so.12.1: cannot open shared object file: No such file or directory

当然没有这样的文件或目录:我有版本 10.2.0.5,而不是 12.1。我的文件名为libclntsh.so.10.1,而不是libclntsh.so.12.1。如何让 cx_Oracle 导入正确的文件?或者有没有办法让 Instant Client v.12 与服务器 v.9 一起工作?

【问题讨论】:

    标签: python oracle


    【解决方案1】:

    Oracle 保证两个版本的向后兼容性。所以版本 10 可以访问版本 8、9、10。版本 12 只能访问版本 10 及更高版本。

    您需要对正确的客户端进行全新安装。

    【讨论】:

    • 除了yum remove 较新的客户端,我如何进行全新安装?
    【解决方案2】:

    您编译或安装的 cx_Oracle 是针对 Oracle 12.1 构建的。您将需要针对 Oracle 10.2 构建一个。如果您确保删除了旧的即时客户端并安装了新的即时客户端,则只需运行 pip install cx_Oracle。 cx_Oracle 5.2 及更高版本现在能够定位即时客户端并针对它进行编译,而无需额外帮助。请注意,您需要确保安装了 instantclient-devel 软件包才能使其正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      • 2017-01-15
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多