Linux pyodbc нет драйверов
Теперь он говорит, чтобы изменить файл odbc.ini, чтобы включить имя сервера и базы данных. Но если я пытаюсь подключиться к нескольким серверам одновременно, как мне настроить файл odbc.ini в этом случае?
Кроме того, в строке подключения к базе данных я должен ввести имя драйвера как или ?
2 ответа
Я хотел получить более подробную информацию о написании драйверов графических устройств и драйверов аудиоустройств с использованием c++ для Linux box. Я новичок в разработке драйверов устройств, пожалуйста, предоставьте мне подробную информацию о разработке/документации для того же самого. Спасибо.
привет нет библиотеки драйверов устройств linux, доступной на моем LInux OS в папке /usr/src/kernels.Can я добавляю или загружаю ее ,если да, то как сделать это .i нужно для разработки драйверов устройств. спасибо
Вот пример, настроенный с FreeTDS, unixODBC и друзьями:
Расположение Driver = может отличаться выше, в зависимости от вашего дистрибутива FreeTDS.
pyodbc connect, DSN бесплатно:
- Вам придется обновить версию TDS, чтобы она соответствовала версии SQL Server, которую вы используете, и бесплатной версии TDS, которую вы используете. Версия 0.95 поддерживает версию 7.3 TDS.
- Версия TDS 7.3 будет работать с MS SQL Server 2008 и выше.
- Используйте версию TDS 7.2 для MS SQL Server 2005.
Подробнее см. Здесь:
если я пытаюсь подключиться к нескольким серверам одновременно, как я должен настроить файл odbc.ini в этом случае?
Если вы хотите подключиться к нескольким серверам, вам нужно будет создать отдельную запись DSN для каждого из них и использовать более одного объекта pyodbc connection . Либо это, либо настройте "Linked Server" на одном из экземпляров SQL Server, чтобы вы могли получить доступ к обоим через одно и то же соединение pyodbc.
в строке подключения к базе данных я должен ввести имя драйвера как или ?
Если вы редактируете "odbc.ini", то вы создаете DSN записи. Вы будете использовать имя DSN в строке подключения, и pyodbc получит подробную информацию (имя сервера, имя базы данных) из соответствующей записи в "odbc.ini".
Похожие вопросы:
Я никогда раньше не использовал ODBC. Я всегда подключался вручную. Теперь я пытаюсь использовать OTL и просто не могу его настроить. Я понял, что по какой-то причине он не читает мои файлы в.
Сайт моего университета всегда выходит из строя каждый день в это время дня, и он остается разбитым в течение 2-3 часов, и это дает эту ошибку: Поставщик Microsoft OLE DB для ODBC драйверов error.
Я хотел получить более подробную информацию о написании драйверов графических устройств и драйверов аудиоустройств с использованием c++ для Linux box. Я новичок в разработке драйверов устройств.
привет нет библиотеки драйверов устройств linux, доступной на моем LInux OS в папке /usr/src/kernels.Can я добавляю или загружаю ее ,если да, то как сделать это .i нужно для разработки драйверов.
У меня есть проблема, когда я не могу заставить Perl DBD::ODBC использовать unixODBC после повторной компиляции и повторной установки. Он был установлен ранее. Я скомпилировал DBD::ODBC для.
Я пытаюсь построить машину науки о данных, способную запускать программы машинного обучения python в производственной среде. Текущие данные бизнес-кейса должны быть извлечены из SQL Server, оценены.
Так как последнее обновление ms-access при использовании pass through query приводит к этой ошибке: Запрос sql server на odbc сделать ошибку - [в Microsoft][диспетчер драйверов ODBC ] Недопустимое.
Всем доброго дня. На Windows список установленных драйверов ODBC находится здесь: HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC водителей На macOS список установленных драйверов ODBC находится.
Я не могу видеть драйверы ODBC 64-bit в выпадающем списке SSIS connection manager? в проекте Visual Studio 2017 SSIS появляются только 32-битные драйверы. Любое решение, чтобы увидеть список.
Я новичок в мире Linux и хочу запросить Microsoft SQL Server из Python. Я использовал его в Windows, и это было прекрасно, но в Linux это довольно болезненно.
Через несколько часов мне наконец удалось установить драйвер Microsoft ODBC на Linux Mint с unixODBC.
Затем я установил анаконду со средой Python 3.
Затем я делаю это:
Я не понимаю, что PyODBC читает правильный путь к файлу из odbcinst.ini и все еще не работает.
Я пошел в /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0 и файл действительно существует!
Так почему же он говорит мне, что его не существует? Вот некоторые возможные подсказки:
- Я в виртуальной среде
- Мне нужно иметь права на «чтение», потому что это корневой путь к файлу
Я не знаю, как решить ни одну из этих проблем.
У меня также была такая же проблема с Ubuntu 14 после того, как я следовал руководству Microsoft по Драйвер ODBC для Linux для SQL Server.
Файл существует, и после запуска ldd он показал, что отсутствуют зависимости:
/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: версия GLIBCXX_3.4.20 'не найдена (требуется для / opt / Microsoft / msodbcsql / lib64 / libmsodbcsql - 13.0.so.0.0 ) /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: версия CXXABI_1.3.8 'не найдена (требуется для
После некоторого поиска я обнаружил, что в репо Ubuntu не было GLIBC в версии 3.4.20, это было в 3.4.19.
Затем я добавил репозиторий в Ubuntu, обновил его и заставил обновить libstdc ++ 6
Проблема решена, протестировано с помощью isql:
У меня была та же проблема 'файл не найден (0) (SQLDriverConnect)' в MAC OS со следующим кодом
cnxn = pyodbc.connect (' DRIVER = ; SERVER = myServerIP, 1433; DATABASE = myDBName; UID = sa; PWD = dbPassword')
После двухдневного поиска в Google я не могу решить проблему, даже изменив freetds.conf, odbcinst.ini и odbc.ini
Наконец, я нашел решение, заменив значение DRIVER .
cnxn = pyodbc.connect ( ' ВОДИТЕЛЬ = < / USR / местные / Библиотека / libmsodbcsql.13.dylib >; SERVER = myServerIP , 1433 ; БАЗА ДАННЫХ = myDBName ; UID = са ; PWD = DBPassword ' )
Моя среда разработки
- MAC OS El Capitan
- Python 3.6.1 в Анаконде
2. Также проверьте правильность номера версии файла odbc в /etc/odbcinst.ini и /etc/odbc.ini . имена должны совпадать, а также путь к драйверу.
Я нашел ответ, который подходит мне здесь. Это для Python 2.7 (поэтому может не работать для тех, кто ищет решение для Python 3.x).
Предлагаемое решение - обновить libgcc: 4.8.5-2 -> 5.2.0-0.
Для обновления libgcc используйте эту команду
Я решаю эту проблему после установки libssl1.0.0.
Сначала я настраиваю строку подключения следующим образом:
Затем я установил libssl1.0.0:
Наконец, я установил локали:
После выполнения этих шагов мой модуль python смог найти и подключиться к базе данных.
Может быть, немного поздно, но я оставляю эти сценарии, которые работали для меня.
Моя проблема была такой же, как и у вас, и я протестировал все параметры, такие как изменение местоположения драйвера, создание символической ссылки, изменение файлов /etc/*.ini и т. Д . ничего не помогло.
Моя проблема, при запуске python 3.6, пакета pyodbc в док-контейнере от alpine, была библиотека libssl1.0.0 .
у меня проблемы с получением pyodbc работа. У меня unixodbc , unixodbc-dev , odbc-postgresql , pyodbc пакеты, установленные на моем Linux Mint 14. Я теряю надежду найти решение самостоятельно,любая помощь ценится. Подробности ниже:
работает:
дает мне:
что заставляет меня думать, что есть unixodbc проблемы конфигурации. Здесь мой unixodbc конфигурационный файл содержимое:
/etc/odbcinst.ini :
/etc/odbc.ini :
/.odbc.ini :
Я считаю, что ответ на вашу проблему заключается в том, что в вашем
/.интерфейс ODBC.ini-файл, который вы говорите использовать driver PostgreSQL - но вы не определили этот драйвер в своем /etc/odbcinst.ini-файл. Попробуйте изменить PostgreSQL до PostgreSQL ANSI или PostgreSQL Unicode (оба из которых определены в /etc/odbcinst.ini).
для меня проблема заключалась в фактическом местоположении моего odbc.ini и odbcinst.ini-файл.
на многих системах расположение установки этих файлов находится в /etc/
однако в моем случае эти файлы были расположены под /usr / local/etc/
можно определить, набрав
odbcinst -j
мой odbc.ini-файлы уже существуют в /etc, поэтому решением было скопировать их из /etc/ в / usr / local/etc/
cp /etc/odbc.ini /etc/odbcinst.ini /usr/local/etc/
Edit: также стоит отметить, что путь, выводимый командой odbcinst-j, может меняться в зависимости от использования sudo или нет.
для меня все сводилось к одному символу пробела.
дал мне "имя источника данных не найден и не указан драйвер по умолчанию" ошибка.
удаление всех пробелов перед символом ' = ' заставило его работать.
во вторичном примечании использование osql для тестирования соединений DSN дает вам гораздо более подробное описание любых ошибок. Это очень помогло мне в процессе.
для других устранения этой же общей ошибки убедитесь, что вы случайно не добавили посторонние символы в верхней части odbc.ini-файл-что делает его недействительным, а все объявления источника данных -молча игнорируется (ошибка, не указывающая на конкретную проблему).
У меня такая же проблема. Оказывается, файл источника данных пропустил: /etc/ODBCDataSources . Просто прикоснитесь к этому файлу, и он заработает.
Я нахожусь на машине Centos 7 Linux, пытающейся подключиться к базе данных SQL через pyodbc. Я узнал, что вам нужно настроить DSN, и вы это сделаете, установив драйвер freetds и сделав что-то вроде:
Казалось, что он установлен, но я получаю ту же ошибку. Может кто-нибудь, пожалуйста, присылайте мне ссылку на рабочий пример.
Если вы компилируете FreeTDS из источника, он будет установлен в /usr/local/freetds, IIRC. Вы также можете установить через yum в CentOS, и вам также понадобится unixODBC. В принципе, FreeTDS соединяет SQL Server с unixODBC, а pyodbc соединяет unixODBC с Python.
Вот пример, созданный с помощью FreeTDS, unixODBC и друзей:
Местоположение Driver = может отличаться в зависимости от вашего дистрибутива FreeTDS - если вы скомпилированы из источника, скорее всего, /usr/local/freetds/lib/libtdsodbc.so .
pyodbc connect, DSN бесплатно:
- Вам нужно будет обновить версию TDS в соответствии с версией SQL Server, на которой вы работаете, и версией Free TDS, которую вы используете. Версия 0.95 поддерживает TDS версии 7.3.
- TDS Version 7.3 будет работать с MS SQL Server 2008 и выше.
- Используйте TDS версии 7.2 для MS SQL Server 2005.
Подробнее см. здесь:
Чтобы построить @FlipperPA ответ, неясно, как pyodbc "находит" драйвер FreeTDS. Если у вас есть эта ошибка:
Могут быть другие возможные причины, включая неправильную среду. Вот что я обнаружил:
pyodbc является оболочкой для unixODBC, которая не документирована, но вам нужно установить unixODBC devel packages, прежде чем вы сможете pip install pyodbc . pyodbc передает строку соединения непосредственно в unixODBC.
unixODBC необходимо загрузить общую библиотеку, содержащую драйвер базы данных ODBC, например libtdsodbc.so для FreeTDS. Вы можете установить параметр DRIVER в строке подключения одной из двух вещей:
- Либо прямой путь к файлу общей библиотеки (например, /usr/local/lib/libtdsodbc.so )
- Или имя раздела конфигурации в odbcinst.ini , которое содержит параметр Driver = . , указывающий на файл разделяемой библиотеки
Первым способом гарантируется поиск разделяемой библиотеки и хороший способ проверить, есть ли у вас проблемы с окружающей средой, но второй способ является предпочтительным и более переносимым. Подробнее см. здесь:
В этом файле ini перечислены все установленные драйверы. Это находится в /etc/odbcinst.ini. Синтаксис прост; имя, за которым следует имущество который сообщает нам имя файла драйверов. Например:
Имя файла драйвера (т.е. /usr/lib/libsybase.so.11 ) должно быть уникальным. Дружественное имя (т.е. Sybase 11 ) также должно быть уникальным.
Однако это может работать, только если unixODBC может найти ваш файл odbcinst.ini . Кажется, он ищет его:
- в вашем домашнем каталоге с измененным именем .odbcinst.ini
- В каталоге, на который указывает переменная среды ODBCSYSINI , если она установлена.
- В противном случае, в /etc .
Для FreeTDS он должен содержать что-то вроде этого:
Только тогда вы можете использовать DRIVER=FreeTDS в строке подключения и ожидать, что он будет работать (и не получить вышеприведенную ошибку).
Вы также можете использовать команду ldd (в Linux), чтобы проверить, удовлетворены ли все зависимости в библиотеке и могут быть найдены и загружены загрузчиком динамической библиотеки, ld.so :
Если вы все еще застряли, вы можете начать с нуля, следуя этому или ответ.
Я новичок в мире Linux, и я хочу запросить Microsoft SQL Server с Python. Я использовал его в Windows, и это было прекрасно, но в Linux это было довольно болезненно.
Через несколько часов мне наконец удастся установить драйвер Microsoft ODBC на Linux Mint с помощью unixODBC.
Затем я установил anaconda с средой python 3.
Затем я сделаю следующее:
То, что я не недооцениваю, это то, что PyODBC, похоже, читает правильный путь к файлу из odbcinst.ini и по-прежнему не работает.
Я пошел в "/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0", и файл действительно существует!
Так почему это говорит мне, что этого не существует? Вот некоторые возможные подсказки:
- Я нахожусь в виртуальной среде
- Мне нужно иметь права на чтение, потому что это корневой путь к файлу
Я не знаю, как решить любую из этих проблем.
ОТВЕТЫ
Ответ 1
У меня также была та же проблема на Ubuntu 14 после того, как после учебника по Microsoft для Драйвер ODBC для SQL Server Linux.
Файл существует и после запуска ldd он показал, что отсутствовали зависимости:
/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0:/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.20' not found (required by /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0) /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8 'не найден (требуется
после поиска какое-то время я нашел его, потому что у Ubuntu repo не было GLIBCXX на версии 3.4.20, это было на 3.4.19.
Затем я добавил репо в Ubuntu, обновил его и принудительно обновил libstdС++ 6
Проблема решена, проверена с помощью isql:
После этого я попробовал тестирование с помощью pdo_odbc (PHP), а затем дал мне тот же самый драйвер, который не нашел ошибку. Чтобы решить эту проблему, мне пришлось создать символическую ссылку для исправления libodbcinst.so.2 :
Ответ 2
Я нашел ответ, который работает для меня здесь. Это для python 2.7 (поэтому может не работать для тех, кто ищет решение для python 3.x).
Для обновления libgcc используйте эту команду
Ответ 3
У меня была такая же проблема 'файл не найден (0) (SQLDriverConnect)' в MAC OS со следующим кодом
CnXn = pyodbc.connect( ' ВОДИТЕЛЬ = ; SERVER = myServerIP 1433; БАЗА ДАННЫХ = myDBName; UID = са; PWD = DBPassword')р >
наконец, я нашел решение, заменив DRIVER значение
cnxn = pyodbc.connect( ' ВОДИТЕЛЬ = ; SERVER = myServerIP 1433; БАЗА ДАННЫХ = myDBName; UID = са; PWD = DBPassword')
My dev environment
- MAC OS EI Capitan
- python 3.6.1 в Анконде
Ответ 4
Следующие рекомендации могут помочь решить проблему:
- Убедитесь, что INI файл конфигурации диска существует odbcinst -j (отметьте odbcinst.ini ).
- Убедитесь, что путь к настраиваемому драйверу из вашего файла INI (run: odbcinst -j ) существует и имеет флаги разрешения на чтение и выполнение ( O_RDONLY|O_CLOEXEC ).
Если у вас все еще есть ошибка, не найденная файлом, несмотря на существование файла, проблема может быть связана с несоответствием версии libgcc по nehaljwani Комментарий GitHub. Решение состоит в том, чтобы обновить ваш libgcc , выполнив команду conda update libgcc .
Читайте также: