我有一個連接到Oracle數據庫的Django程序。在我settings.py
文件我有這樣的配置:Django和錯誤的Oracle連接憑據
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.oracle',
'NAME': 'xe',
'USER': 'MY_USER_NAME',
'PASSWORD': 'abcdefghijklmnopqrstuvwxyz',
'HOST': 'db_server.example.com',
'PORT': '1234',
}
}
我收到嘗試加載網站時,一個奇怪的錯誤:
ORA-28547: connection to server failed, probable Oracle Net admin error
經過進一步調查,我聞了聞Web服務器之間的TCP流量數據庫服務器。我發現這段文字在網絡通信,這是我重新格式化爲這個職位:
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=1.2.3.4)
(PORT=1234)
)
(CONNECT_DATA=
(SID=xe)
(CID=
([email protected]_hostname)
(HOST=webserver_hostname)
(USER=apache)
)
)
)
所以我的問題是:爲什麼Django的嘗試連接到比我指定的那些不同的憑據Oracle數據庫?值得注意的是,它試圖使用用戶'apache'而不是'MY_USER_NAME'。數據庫主機IP,端口和SID是正確的,我指定了什麼。它似乎是不同的用戶名。
(作爲一個方面說明,我想密碼在日誌的過程以後的部分分開傳輸?)
這並沒有(儘管'USER'選擇不好)意味着應用程序試圖以數據庫用戶'apache'登錄。如果問題是一個不正確的用戶名被傳入,你會得到一個非常不同的錯誤。您是否試圖連接到本地計算機上的Oracle XE數據庫?或者在遠程機器上?你可以在Django應用程序運行的同一臺機器上使用SQL * Plus進行連接嗎? –
@JustinCave,我從Web服務器連接到遠程機器。我在Web服務器上安裝了SQL Developer,並能夠成功連接到數據庫。 –
您確定您指定的主機和端口與您在SQL Developer中指定的連接相同嗎?特別是,該端口幾乎總是1521.您是否知道在這種情況下,Django是使用瘦JDBC驅動程序進行連接還是使用Oracle客戶端庫?我對文檔的讀(似乎很快)似乎暗示它正在使用Oracle客戶端而不是瘦JDBC驅動程序。您可以使用SQL * Plus連接到遠程數據庫嗎? –