【问题标题】:cx_Oracle.Connection throws cx_Oracle.InternalError: No Oracle error?cx_Oracle.Connection 抛出 cx_Oracle.InternalError: No Oracle 错误?
【发布时间】:2012-09-18 17:47:25
【问题描述】:

我已经在我的 Linux 机器上安装了 python Oracle 模块 cx_Oracle。 oracle 用户和 root 用户都可以导入 cx_Oracle 并使用 cx_Oracle.Connection(...) 创建数据库连接。

服务器上的其他用户也可以导入 cx_Oracle,但是当他们尝试创建连接对象时会抛出以下异常:

>>> cx_Oracle.Connection('....')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cx_Oracle.InternalError: No Oracle error?

我已经确认我要开始工作的用户设置了所有正确的系统变量,ORACLE_HOME、LD_LIBRARY_PATH、ORACLE_SID 和 PATH。该用户使用 sqlplus 并以这种方式连接数据库也没有问题。

我认为这是一个文件权限问题,因为 oracle 和 root 用户都没有问题。我只是不确定哪个文件可能导致问题。

【问题讨论】:

  • 当您以 oracle 或 root 运行相同的脚本时,您完全不会出错,对吗?

标签: python oracle cx-oracle


【解决方案1】:

我遇到了同样的问题,对我来说这是一些 Oracle 语言环境文件的访问权限。该问题已通过使 $ORACLE_HOME/nls/data 及其内容对全世界可读而得到解决。

为了找到问题,我写了一个小脚本test_oracle.py:

import cx_Oracle as oracle
conn = oracle.connect("user/pwd@host:port/SID")

然后运行 ​​truss python test_oracle.py 来查找访问问题(在 Linux 上,我当然使用了 strace。)

【讨论】:

    猜你喜欢
    • 2021-06-23
    • 2016-04-17
    • 2016-08-30
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 2019-10-18
    • 2019-10-05
    • 2018-04-24
    相关资源
    最近更新 更多