cx_Oracle.Connection выдает cx_Oracle.InternalError: Нет ошибки Oracle?
Я установил модуль Oracle Python cx_Oracle на мою Linux-машину. Пользователь oracle и пользователь root могут импортировать cx_Oracle и создать соединение с базой данных, используя cx_Oracle.Connection(...).
Другие пользователи на сервере также могут импортировать cx_Oracle, но при попытке создать объект подключения выдается следующее исключение:
>>> cx_Oracle.Connection('....')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cx_Oracle.InternalError: No Oracle error?
Я подтвердил, что для пользователя, которого я пытаюсь заставить работать, установлены все правильные системные переменные, ORACLE_HOME, LD_LIBRARY_PATH, ORACLE_SID и PATH. У этого пользователя также нет проблем с использованием sqlplus и таким образом подключения к базам данных.
Я предполагаю, что это проблема с правами доступа к файлам, так как у пользователей как oracle, так и root нет проблем. Я просто не уверен, какой файл может быть причиной проблемы.
1 ответ
У меня была та же проблема, и для меня это были права доступа для некоторых файлов локали Oracle. Проблема была решена путем $ORACLE_HOME/nls/data
и его содержание читаемо.
Чтобы найти проблему, я написал небольшой скрипт test_oracle.py:
import cx_Oracle as oracle
conn = oracle.connect("user/pwd@host:port/SID")
а потом побежал truss python test_oracle.py
чтобы найти проблему доступа (в Linux я использовал strace
вместо этого, конечно.)