Django - ОШИБКА: ORA-01017: неверное имя пользователя / пароль;вход запрещен - PullRequest
0 голосов
/ 18 февраля 2019

Я использую базу данных Oracle db в своем проекте django.Я могу подключиться к моей удаленной базе данных Oracle, используя sqlplus из линии CMD и используя разработчика Oracle SQL.Всякий раз, когда я пытаюсь использовать python manage.py dbshell, он возвращает ошибку оракула. ​​

SP2-0751: Unable to connect to Oracle.  Exiting SQL*Plus
Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\base.py", line 316, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\base.py", line 353, in execute
    output = self.handle(*args, **options)
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\commands\dbshell.py", line 22, in handle
    connection.client.runshell()
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\oracle\client.py", line 12, in runshell
    subprocess.check_call(args)
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 341, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sqlplus', '-L', 'system/\\"password\\"@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=8080))(CONNECT_DATA=(SID=temp)))']' returned non-zero exit status 1.

Settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'temp',
        'USER': 'system',
        'PASSWORD': 'password',
        'HOST': 'host',
        'PORT': '8080',
    }
}

Я изменил информацию БД в целях безопасности, но информация settings.py должнасопоставьте ошибку трассировки стека.

Есть предложения относительно того, что мне следует попробовать, или, может быть, я забыл что-то установить?

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Я не уверен, как это исправить в Django, но проблема, похоже, заключается в том, как сбрасывается пароль.Вы можете проверить это, используя команду sqlplus, непосредственно основанную на сбое вывода подпроцесса.

Это не удалось:

# From error: [sqlplus', '-L', 'user/\\"password\\"@some_dsn
sqlplus -L user/\\"password\\"@some_dsn

Это работает:

sqlplus -L user/password@some_dsn

Возможнорассмотрите возможность отправки патча для oracle / sqlplus в Django, но в ближайшее время это не сработает.Вы можете шевелиться всеми ручками Django, я думаю, что это проблема низкого уровня, которую вы не сможете исправить, изменив настройки.

0 голосов
/ 18 февраля 2019

попробуйте эту конфигурацию или вы можете прочитать эту часть django. db_oracle .

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.oracle',
    'NAME': 'temp',
    'USER': 'password',
    'PASSWORD': 'password',
    'HOST': '',
    'PORT': '',
    }
}
...