python - 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 时会出现此问题。
我还有其他测试/更改要做:
- 升级 cx_oracle 以使用版本 7.0.0
- 使用 Oracle 11g DB 测试客户端 Oracle 12
我会尽快在此处发布结果。
有没有人有/有同样的问题,可以分享经验/解决方案?
谢谢。
编辑 1
我对 Oracler 18c DB 的配置进行了以下附加测试:
- Python 3.6.1 64 位,CX-ORACLE 6.0.3,Oracle 客户端 11 64 位 => 好的
- Python 3.6.1 64 位,CX-ORACLE 7.0.0,Oracle 客户端 11 64 位 => 好的
- Python 3.6.1 64 位,CX-ORACLE 7.0.0,Oracle 客户端 12 64 位 => NOK
- Python 3.6.1 64 位,CX-ORACLE 6.0.3,Oracle 客户端 12 64 位 => NOK
使用 Oracle 客户端 12 32 位没有意义,因为它与我的配置不兼容。
编辑 2
我在 Oracler 11g DB 上对配置进行了以下附加测试:
- Python 3.6.1 64 位,CX-ORACLE 6.0.3,Oracle 客户端 11 64 位 => 好的
- Python 3.6.1 64 位,CX-ORACLE 7.0.0,Oracle 客户端 11 64 位 => 好的
- Python 3.6.1 64 位,CX-ORACLE 7.0.0,Oracle 客户端 12 64 位 => OK
- Python 3.6.1 64 位,CX-ORACLE 6.0.3,Oracle 客户端 12 64 位 => OK
解决方案
问题是命令在 Oracle Client 12 和 Oracle 18c DB 中区分大小写(Oracle 11g 没有问题)。如果我更改我的代码
res = db.gettype("TYPE_EMPLOYEE").newobject()
它工作正常
推荐阅读
- javascript - Angularjs - 过滤到文本框后我的折叠和展开不起作用
- sql - 为每一列添加一个前缀
- sql - SQL Group By 函数结合 SUM
- django - 如何从 Django 中的选择中获取价值?
- xml - 如何在没有特定匹配标记的情况下匹配整个 XML 文件
- python - 如何在 Python 中为两个特征绘制散点图并绘制预测线?
- java - 如何让播放按钮只工作一次?
- bash - 使用 Slurm 时是否可以在调试模式 (bash -x) 下启动 bash 脚本?
- scala - 由于列不匹配,在将 spark 数据帧插入到 phoenix 表时面临问题
- c# - C# WPF 如何在以编程方式更新数据网格后更新可观察集合 - 无 MVVM