Я написал сценарий и запустил его на настольном компьютере «A», нацеленным на базу данных Oracle (10g) и сервер приложений на настольном компьютере «B». Все прошло без проблем.
Затем я скопировал сценарий на рабочий стол «B», и он выплюнул следующее: «ORA-24315: недопустимый тип атрибута» в следующем фрагменте:
cx_dsn = cx_Oracle.makedsn(cx_hostname, cx_port, cx_SID)
cx_connection = cx_Oracle.Connection(cx_username + '/' + cx_password + '@'+ cx_dsn )
Обе машины были настроены следующим образом:
- Windows 7 (64-битная)
- 32-битная версия Python (ActiveState)
- pypm install cx-oracle (что привело к версии cx_Oracle.clientversion () = (11, 2, 0, 3, 0) - Да, это указывает на v11, но сработало против версии 10g с рабочего стола 'A')
Однако на настольном компьютере «B» были установлены Oracle 10g и WebSphere 7 - на настольном компьютере «A» не было
Я искал, и многие люди сталкивались с этой проблемой или чем-то подобным, но в целом единственными предлагаемыми решениями были:
- Убедитесь, что путь не ссылается на библиотеки Oracle перед библиотеками Python - я предполагаю, что здесь предполагается, что установка Oracle на настольном компьютере B мешает. Поэтому я настроил путь так, чтобы он ссылался только на Python (без упоминания об Oracle и т. Д.) - это не помогло
- Убедитесь, что вы используете 32-битную версию всего или 64-битную версию всего - я использовал 32-битную версию всего, что касается Python.
- Убедитесь, что cx-Oracle совпадает с базой данных, на которую вы нацеливаетесь ... ладно, похоже, у меня проблема, но ... Странно то, что скрипт действительно работает на рабочем столе 'A', поэтому я полагаю, что это должно быть что-то окружающее. рабочий стол "B". Итак, я пошел и установил специальную версию cx_Oracle 10g. Никакого успеха. (Этот запрос https://stackoverflow.com/questions/10456598/cx-oracle-multiple-instances-of-oracle-10-and-11-plus-oracle-home не ответили, но звучит похоже)
Итак, я застрял - есть предложения?