cx_Oracle.DatabaseError ORA-01804 和 sqlalchemy连接出错的原因分析和处理方式


1.环境介绍

windows10
开发环境1:python 64位 anaconda3.7.3 with cx_oracle 7.2.3
开发环境2:python 32位 3.6.5 with cx_oracle 5.3
oracle 32位客户端11g
oracle 64位服务端11g
本文记录着我那找为坑而逝去的青春。如果搜到我的文章想直接找解决方案请到3.结论里复制代码即可。

2.问题排查

在使用 开发环境1 开发的时候连接sqlalchemy报错,提示ora-01804,搜索后没有找到相关的结果。
然后想起还有 开发环境2 曾经用过的cx_oracle模块,一尝试发现果然是环境引起的异常。
然后把cx_oracle从7.2.3降级到5.3提示版本有问题。只好把cx_oracle重新升级到6.1 。
还是提示连接不了,这一次换个报错了:大致英文含义为cx_oracle环境异常。
这一次百度可以搜到提示了:添加环境变量指向Oracle_home.
根据百度的结果进行了环境变量的设置终于可以连接了.
但是查询的中文居然以???????显示。这次很容易就百度出来了,感觉万能的网友。

3.结论

#为了使oracle连接正常,请保证python的位数和oracle_home指向的客户端或服务端位数一致
os.environ["ORACLE_HOME"] = r'D:\app\me\product\11.2.0\dbhome_3'
#为了使字符集正常,请在NLS_LANG设置和服务端一致的字符集(不行就多试几个,总会套上)
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM