2016-07-21 1 views
3

Essayer de se connecter à Oracle DB via settings.pydjango.db.utils.DatabaseError: ORA-12154: TNS: n'a pas pu résoudre l'identifiant de connexion spécifié

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.oracle', 
     'NAME': 'Hostname:Port/Service name not SID', 
     'USER': 'Username',      
     'PASSWORD': 'Password',          
    } 
} 

Sur la base de ce que j'ai trouvé en ligne, Cela est censé être comment je me connecte à une base de données Oracle via le nom du service si je n'ai pas de SID. Mais je reçois toujours l'erreur django.db.utils.DatabaseError: ORA-12154: TNS:could not resolve the connect identifier specified

Si je Forgó toutefois placer ces détails dans le settings.py et je viens d'utiliser les chaînes de connexion fournies par cx_Oracle,

dsn_tns = cx_Oracle.makedsn('Hostname', 'Port', 
          service_name='Service name not SID') 
connection = cx_Oracle.connect('Username', 'Password', dsn_tns) 

je me connecter très bien. Existe-t-il une nouvelle syntaxe pour se connecter au nom de service de settings.py? Est-il utile d'essayer de se connecter via settings.py si je peux simplement me connecter via les chaînes de connexion?

Répondre

0

Essayez ceci.

settings.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 

EHS_CONF_PATH = os.path.join(BASE_DIR, 'arquivo.conf') 
DATABASES = { 
    'default': { 
     'ENGINE': os.environ['DB_ENGINE'], 
     'NAME': os.environ['DB_NAME'], 
     'HOST': os.environ.get('DB_HOST', 'localhost'), 
     'PORT': os.environ.get('DB_PORT', '1521'), 
     'USER': os.environ.get('DB_USER', 'user'), 
     'PASSWORD': os.environ.get('DB_PASS', "pass") 
    } 
} 

arquivo.conf

DB_NAME=XE 
DB_USER=user 
DB_PASS=pass 
DB_HOST=10.7.0.140 <-- ip host 
DB_PORT=1521 
DB_ENGINE=django.db.backends.oracle 

J'ai eu un problème quand mon mot de passe contenu '@'