Поставщик не совместим с версией клиентской ошибки Oracle при использовании Oracle. DataClient

Не анализируйте его. Просто спросите.

import socket

try:
    socket.inet_aton(addr)
    # legal
except socket.error:
    # Not legal
16
задан Community 23 May 2017 в 12:00
поделиться

4 ответа

Я изучил эту проблему подробнее, и вам просто нужно получить все соответствующие DLL из той же загруженной версии ODP.Net и поместите их в ту же папку, что и ваш Exe-файл, потому что ODP.Net старается не смешивать номера версий,это проблема, с которой вы столкнулись (либо он, либо oci.dll полностью отсутствует, и в этом случае он досадно выдает ту же ошибку).

Я объяснил, как это сделать здесь: http: / /splinter.com.au/using-the-new-odpnet-to-access-oracle-from-c Вот суть этого:

  • Загрузить http://www.oracle.com/technology/software/tech/windows/odpnet/index1110710beta.html
  • Распаковать файл
  • Распаковать все JAR-файлы в нем
  • Возьмите эти dll, которые были только что распакованы: oci.dll (переименован в oci.dll.dbl) Oracle.DataAccess.dll oraociicus11.dll OraOps11w.dll orannzsbb11.dll oraocci11.dll ociw32.dll (переименован в ociw32.dll.dbl)
  • Поместите все библиотеки DLL в ту же папку, что и ваш исполняемый файл C #
17
ответ дан 30 November 2019 в 22:31
поделиться

Вы создали и успешно протестировали соединение с помощью администратора ODBC в своей клиентской системе?

Существует исправление для проблемы с разрешениями в клиенте 9i и 10g, которая приводит к этой ошибке . Если вы используете 10.2.0.1, вам может потребоваться обновление до 10.2.0.3, чтобы решить эту проблему.

1
ответ дан 30 November 2019 в 22:31
поделиться

Я столкнулся с той же проблемой. Если на вашем компьютере установлен клиент 11g, вам необходимо использовать 11g ODP.Net DLL. Мне пришлось полностью удалить все, а затем установить клиент 11g, а затем драйверы ODP.NET 11g. Драйверы устанавливаются в GAC, и это становится своего рода головной болью.

* Обратите внимание: мой администратор баз данных понял, что это работает, только если вам не нужно подключаться к любой версии ниже 9i *

Нам пришлось сделать это и на наших серверах.

HTH

0
ответ дан 30 November 2019 в 22:31
поделиться

Что ж, я заставил свое приложение использовать соединение Ole DB (пространство имен System.Data.Oledb), и оно отлично работает. Учитывая, что приложение - это всего лишь интерфейс для вызова Oracle SP, и значения не возвращаются, я думаю, что этот подход приемлем, потому что за 2 дня, которые я потратил, пытаясь найти решение этой проблемы, я мог бы выполнить много больше разработки в приложении. Я все еще открыт для ответов, так как могу узнать, какую ошибку я совершаю для таких приложений в будущем.

0
ответ дан 30 November 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: