Django Oracle Connection
Я использую Oracle 11g и Django 1.5.1. Я установил cx_Oracle, импорт cx_Oracle работает нормально. Я устанавливаю настройки базы данных следующим образом:
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.oracle',
'NAME' : 'XE',
'USER' : 'system',
'PASSWORD' : 'mypass',
'HOST' : '127.0.0.1'
'PORT' : '1521'
}
}
Когда я сказал
python manage.py syncdb
сказано
DatabaseError: ORA-12170: TNS:Connection timeout occurred.
Я могу подключиться к базе данных с помощью Navicat.
1 ответ
Эта ошибка означает, что не удалось установить TCP-соединение с 127.0.0.1 портом 1521.
Как пользователь root или пользователь, использующий базу данных Oracle, какой адрес отображается для порта LISTENing в выводе команды lsof -Pni:1521
Если это не 127.0.0.1:1521 или *:1521, то он не будет прослушивать 127.0.0.1
Тем не мение. Это тайм-аут соединения, а не что-то вроде недоступности порта (соединение отказано)
Вы не сказали, запускали ли вы navicat с той же машины или с другой машины. Если приведенная выше команда показывает только 127.0.0.1:1521, то она прослушивает только этот IP-адрес и должна быть изменена, чтобы разрешить подключения с других компьютеров, если вы пытаетесь достичь этого.
Проверьте правила брандмауэра, которые могут блокировать трафик.
Если вы пытаетесь подключиться удаленно, то для определения проблемы может пригодиться трассировка сети. У меня недавно была проблема, похожая на эту, которая вызывала сбой ARP. Вы можете увидеть, как я диагностировал эту конкретную проблему на http://distracted-it.blogspot.co.nz/2014/04/ora-12170-tnsconnect-timeout-resolved.html