/ / Django Oracle डीबी सेटिंग्स - django, oracle, django-models, oracle11g, django-oracle

Django Oracle डीबी सेटिंग्स - django, oracle, django-models, oracle11g, django-oracle

मैं अपने डीजेंगो प्रोजेक्ट के साथ अपने स्थानीय ऑरैकल डीबी को जोड़ना चाहता हूं लेकिन मेरा डेटाबेस प्रमाण पत्र काम नहीं कर रहा है। असल में, मैं अपने ऑरैकल डेटाबेस को एसक्यूएल डेवलपर के माध्यम से उस क्रेडेंशियल के साथ कनेक्ट करने में सक्षम हूं: यहां छवि विवरण दर्ज करें

मैंने बस उस तरह के क्रेडेंशियल का उपयोग django सेटिंग्स_py में किया था

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

और त्रुटि है:

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

यहां मेरी श्रोता स्थिति है

 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 № 1

आपको बदलना चाहिए HOST सेवा मेरे localhost" or "127.0.0.1 और एसआईडी है NAME.

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

भविष्य के संदर्भों के लिए, यदि ओरेकल एसआईडी के बजाय सेवा नाम के साथ कॉन्फ़िगर किया गया है, तो कॉन्फ़िगरेशन होगा:

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

Django में ओरेकल के साथ काम करते समय विचार करने की एक और बात यह है कि जब आप अन्य उपयोगकर्ताओं (स्कीमा) डेटाबेस से कनेक्ट होते हैं, तो आपको सेट करना होगा db_table मेटा विकल्प Django मॉडल में:

class OracleTable(models.Model):
... fields ...
class Meta:
db_table = ""OTHERUSER"."ORACLETABLE""