我有一个连接到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连接到远程数据库吗? –