我尝试从django连接到oracle数据库,但出现此错误(ORA-03113:通信信道上的文件结束)

wz3gfoph  于 2023-01-18  发布在  Go
关注(0)|答案(1)|浏览(219)

我用的是django4.1和oracle 9.2
当我尝试从django连接到oracle时,我得到了这个错误

ORA-03113: end-of-file on communication channel
Process ID: 0
Session ID: 0 Serial number: 0

这是我的转机

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': '***',
        'USER': '***',
        'PASSWORD': '***',
        'HOST': '***',
        'PORT': '***',
    }
}

有什么问题?

gcuhipw9

gcuhipw91#

您是否确定已正确指定尝试连接的Oracle数据库的版本-版本“9.2”?这是非常旧的,不,非常旧的Oracle数据库版本,实际上有20多年的历史。这意味着,如果没有打字错误,版本确实是9.2,那么您遇到的错误只是Django使用的Oracle DB服务器和Oracle客户端不兼容(可以是Oracle客户端/ Oracle即时客户端,也可以是Python模块cx_Oracle)。这意味着,所有这些不同的客户端都太新,无法与如此陈旧的Oracle数据库一起工作。因此,在尝试建立连接期间,您会收到错误"ORA-03113: end-of-file on communication channel"
顺便说一句,Oracle数据库的确切版本由4个数字(甚至5个数字)组成,而不是像您提到的2个数字-“9.2”。如果是9.2版本,Oracle数据库的版本可以是9.2.0.1(第一个),最高可达9.2.0.8。
为了解决连接问题,您必须尝试找到非常旧的兼容版本的Oracle客户端或Python模块cx_Oracle(如果存在这样的版本),或者,这是更可取的方法-升级您的Oracle数据库到一些当前版本,如19 c或21 c。

相关问题