Если вы посмотрите только на реализации 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.