Если вы посмотрите только на реализации Unix, вы получите интересные идеи о том, как работает ODBC. Ни одна из этих реализаций не на 100% сопоставима с эталонной реализацией в Windows, созданной разработчиком спецификации ODBC, то есть Microsoft .
В Unix обычно есть два менеджера драйверов ODBC. iODBC , чья документация по данному вопросу находится здесь , поддерживается и поддерживается моим работодателем. UnixODBC другой, и обсуждался в других ответах. Предполагается, что они эквивалентны API друг другу и реализации Windows, так как обе являются реализациями стандарта, не зависящими от платформы.
Проще говоря, odbcinst.ini
это файл реестра и конфигурации для драйверов ODBC в среде, а odbc.ini
также файл реестра и конфигурации для DSN ODBC (имен источников данных), обычно основанный на драйверах, зарегистрированных в другой.
У вас было несколько конкретных вопросов ...
1) У меня есть строка Driver = /path/to/file/.so
в обоих файлах и значения иногда отличаются. Имеет ли это смысл? Если так, что преобладает?
Как Driver = /path/to/file.so
правило, они должны быть одинаковыми в обоих файлах, когда оба выражены как пути. В odbc.ini
, эта запись может вместо того, Driver = {name of driver}
где имя, как указано в odbcinst.ini
. Вообще говоря, настройки odbc.ini
преобладают над конфликтующими настройками, odbcinst.ini
если таковые существуют.
2) Является odbcinst.ini
ли JavaScript-подобный «прототип» для odbc.ini
? Другими словами, если я создаю несколько DSN с общими настройками, могу ли я распространять общие настройки из odbc.ini
в odbcinst.ini
?
Нет, odbcinst.ini
это не «прототип» в этом смысле. odbcinst.ini
настройки относятся к драйверу , но не относятся к DSN на основе этого драйвера.
3) В чем разница между Driver
и Setup
в odbcinst.ini
? Кажется, они имеют одинаковые значения. Являются ли эти настройки базой данных или они универсальны?
В odbcinst.ini
, то Driver =
обращается к библиотеке драйверов, а также Setup =
в библиотеке настройки. Последнее совершенно необязательно, и когда оно существует, его можно, но не обязательно, использовать во время соединения для передачи данных; он в первую очередь предназначен для использования администратором ODBC при «настройке» таких соединений, чтобы быть сохраненным как DSN. Иногда эти библиотеки находятся в одном и том же физическом файле, но это не обязательно, и, например, они обычно не находятся в среде OS X.