You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Oracle XE 11g到21c后Django无法连接TNS监听器问题求助

问题核心原因

  1. 监听器的1521端口仅绑定在主机名centos8对应的网络接口,没有绑定127.0.0.1环回接口,你配置中HOST字段填了127.0.0.1,直接访问127.0.0.1:1521不存在监听服务,所以抛出ORA-12541错误。
  2. Django 1.10的Oracle后端逻辑会自动拼接HOST、PORT、NAME生成TNS连接串,你在NAME中额外填写了主机名,会导致最终生成的连接串格式错误。
  3. 配置中存在笔误CONN_MAX_AG,正确字段名为CONN_MAX_AGE(虽然该字段不影响连接逻辑,建议修正)。

解决方案

方案1:按Django标准配置规则修改(推荐)

仅保留服务名在NAME字段,修改HOST为监听器绑定的主机名:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'XEPDB1',
        'PORT' : '1521',
        'HOST' : 'centos8',
        'USER' : 'raxak3',
        'PASSWORD' : '*****',
        'CONN_MAX_AGE' : None,
        'OPTIONS' : {
            'threaded' : True,
        }
    }
}

方案2:使用Easy Connect命名格式

删除HOST、PORT字段,直接将完整易连接串填入NAME字段,Django会直接使用该串作为连接DSN:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'centos8:1521/XEPDB1',
        'USER' : 'raxak3',
        'PASSWORD' : '*****',
        'CONN_MAX_AGE' : None,
        'OPTIONS' : {
            'threaded' : True,
        }
    }
}

验证方式

修改配置后先执行python3 manage.py dbshell,若能直接进入Oracle命令行则说明配置正确,再执行migrate操作即可。

内容的提问来源于stack exchange,提问作者Prasanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:45:03