首页 > 解决方案 > Python 3.6 / Oracle 18c / Oracle Client 12 问题 (OCI-22303)

问题描述

我想在这里公开一个问题,我必须知道其他人是否有同样的问题(并修复它:))

我有一个使用 cx_oracle 6.0.3 的 Python 脚本(3.6.1 64 位)。连接 ot Oracle 18c DB。连接运行良好。我的问题是当我尝试使用 gettype 从数据库类型定义中创建 Python 变量时。

这是我的例子:

db = cx_Oracle.connect("scott/tigger@oracle_18c")
res = db.gettype("type_employee").newobject()

根据配置,我有以下问题:

2018-10-31 15:28:15,019 - ERROR - OCI-22303: type ""."type_employee" not found

在 Oracle 11g 中,该脚本运行良好。使用取决于我使用的 Oracle 客户端的 Oracle 18c(我想,这就是我正在调查的地方)。当我使用 Oracle 11.1.0.x 客户端时,它运行良好。当客户端是 Oracle 12 时会出现此问题。

我还有其他测试/更改要做:

我会尽快在此处发布结果。

有没有人有/有同样的问题,可以分享经验/解决方案?

谢谢。

编辑 1

我对 Oracler 18c DB 的配置进行了以下附加测试:

使用 Oracle 客户端 12 32 位没有意义,因为它与我的配置不兼容。

编辑 2

我在 Oracler 11g DB 上对配置进行了以下附加测试:

标签: pythonoraclecx-oracle

解决方案


问题是命令在 Oracle Client 12 和 Oracle 18c DB 中区分大小写(Oracle 11g 没有问题)。如果我更改我的代码

res = db.gettype("TYPE_EMPLOYEE").newobject()

它工作正常


推荐阅读