代码改变世界

linux上,python3脚本中用cx_Oracle连接oracle数据库报Segmentation fault (core dumped)

2020-11-13 13:28  阿飞与安达  阅读(898)  评论(0编辑  收藏  举报

开发时在windows上进行的,没有遇到连接数据库的错误,但是迁移到linux环境执行时,遇到了这个问题。详细讲一下过程。

1、环境:CentOS 6.5 , Oracle: 12.2 , python3.6, instantclient_19_9, cx_Oracle 8.0.1

开始使用时提示GLIBC 2.14 没有,因为服务器自带的是 GLIBC2.12 ,所以重新安装了2.14,

配置好以上环境后,执行脚本,连接数据库时总是报错: Segmentation fault (core dumped)  ,但是在python的交互模式却可以正常连接.

查了好久,也没找到解决办法,最后看到一个帖子: https://stackoverflow.com/questions/58100432/segmentation-error-when-using-cx-oracle-with-pandas 才得以解决,因此记录下.

 

2、主要原因是脚本中同时import pandas 了,去掉pandas后,脚本就可以正常执行了,不再报错.

但是我们还是需要pandas的,所以继续参考上边那个帖子,降低instantclient的版本,到18,18使用GLIBC2.12 就可以了,于是下载18,打开这个网页,往下滚动,找到该版本

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html   ,下载红框标记的这个就可以:

 

下载后,解压,并添加到LD_LIBRARY_PATH中即可.

然后将之前环境变量中添加的glibc2.14 的环境变量去掉,就可以了.

 

再测试脚本,Segmentation fault (core dumped)  得到了完美解决.