2017-12-28 35 views
0

Ich möchte nur meine lokale Oracle DB mit meinem Django-Projekt verbinden, aber meine Datenbank Anmeldeinformationen funktioniert nicht. Eigentlich bin ich der Lage, meine Oracle-Datenbank via SQL-Entwickler eine Verbindung mit dem Berechtigungsnachweis: enter image description hereDjango Orakel db Einstellungen

habe ich nur, dass Berechtigungsnachweis in django settings_py wie die

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.oracle', 
     'NAME': 'INTERNAL', 
     'USER': 'system', 
     'PASSWORD': 'oracle',   
     'HOST':'localhost/xe', 
     'PORT':'1521' 
    } 
} 

und Fehler ist:

Traceback (most recent call last): 
web_1 | File "manage.py", line 22, in <module> 
web_1 |  execute_from_command_line(sys.argv) 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line 
web_1 |  utility.execute() 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute 
web_1 |  self.fetch_command(subcommand).run_from_argv(self.argv) 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv 
web_1 |  self.execute(*args, **cmd_options) 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute 
web_1 |  output = self.handle(*args, **options) 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/core/management/commands/makemigrations.py", line 110, in handle 
web_1 |  loader.check_consistent_history(connection) 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/db/migrations/loader.py", line 282, in check_consistent_history 
web_1 |  applied = recorder.applied_migrations() 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/db/migrations/recorder.py", line 65, in applied_migrations 
web_1 |  self.ensure_schema() 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/db/migrations/recorder.py", line 52, in ensure_schema 
web_1 |  if self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()): 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 254, in cursor 
web_1 |  return self._cursor() 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 229, in _cursor 
web_1 |  self.ensure_connection() 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection 
web_1 |  self.connect() 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 94, in __exit__ 
web_1 |  six.reraise(dj_exc_type, dj_exc_value, traceback) 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise 
web_1 |  raise value.with_traceback(tb) 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection 
web_1 |  self.connect() 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 189, in connect 
web_1 |  self.connection = self.get_new_connection(conn_params) 
web_1 | File "/usr/local/lib/python3.6/site-packages/django/db/backends/oracle/base.py", line 212, in get_new_connection 
web_1 |  return Database.connect(self._connect_string(), **conn_params) 
web_1 | django.db.utils.DatabaseError: ORA-12545: Connect failed because target host or object does not exist 

hier sein mein Zuhörer Status

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE))) 
    STATUS of the LISTENER 
    ------------------------ 
    Alias      LISTENER 
    Version     TNSLSNR for Linux: Version 11.2.0.2.0 - Production 
    Start Date    28-DEC-2017 15:51:21 
    Uptime     0 days 2 hr. 8 min. 36 sec 
    Trace Level    off 
    Security     ON: Local OS Authentication 
    SNMP      OFF 
    Default Service   XE 
    Listener Parameter File /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora 
    Listener Log File   /u01/app/oracle/diag/tnslsnr/e48c7c272f44/listener/alert/log.xml 
    Listening Endpoints Summary... 
     (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE))) 
     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=e48c7c272f44)(PORT=1521))) 
     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=e48c7c272f44)(PORT=8080))(Presentation=HTTP)(Session=RAW)) 
    Services Summary... 
    Service "PLSExtProc" has 1 instance(s). 
     Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... 
    Service "XE" has 1 instance(s). 
     Instance "XE", status READY, has 1 handler(s) for this service... 
    Service "XEXDB" has 1 instance(s). 
     Instance "XE", status READY, has 1 handler(s) for this service... 
    here its my listener status 
+0

ich stelle fest, dass der Port in Ihrem Django Konfigurationen den Hafen nicht überein in Ihrem SQL Developer-Verbindungsdialog (1521 vs 8080). Vielleicht ist das das Problem? – Zerodf

+0

Ich habe gerade viele Kombinationen ausprobiert, es tut mir leid, ich habe meine Frage bearbeitet – jackquin

+0

tatsächlich wie kann ich meine Sid Einstellungen geben? – jackquin

Antwort

0

Sie sollten HOST zu localhost' or '127.0.0.1 ändern und SID ist NAME.

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.oracle', 
     'NAME': 'xe', 
     'USER': 'system', 
     'PASSWORD': 'oracle',   
     'HOST':'127.0.0.1', 
     'PORT':'1521' 
    } 
} 

Für zukünftige Referenzen, wenn Oracle mit Service-Namen anstelle von SID konfiguriert ist, dann ist die Konfiguration wäre:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.oracle', 
     'NAME': '127.0.0.1:1521/service.name', 
     'USER': 'system', 
     'PASSWORD': 'oracle',   
    } 
} 

andere Sache zu prüfen, wenn sie mit Oracle in Django arbeiten, ist, dass, wenn Sie eine Verbindung herstellen an andere Benutzer (Schema) Datenbank, haben Sie db_tableMeta option in Django Modelle zu setzen:

class OracleTable(models.Model): 
    ... fields ... 
    class Meta: 
     db_table = '\"OTHERUSER\".\"ORACLETABLE\"' 
+0

Ich habe Ihren Vorschlag versucht, aber jetzt wird der Fehler 'django.db.utils.DatabaseError: ORA-12541: TNS: kein Listener' – jackquin

+0

auch haben wir nicht den Datenbanknamen – jackquin

+0

Ok, haben Sie [Cx_oracle] (http: // cx-oracle.readthedocs.io/en/latest/installation.html) und [Oracle Client] (http://www.oracle.com/technetwork/database/features/instant-client/index.html)? Dieser Fehler besagt, dass die Datenbank unter 127.0.0.1:1521 nicht gefunden werden kann. – Borut