Wenn Sie sich nur Unix-Implementierungen ansehen, erhalten Sie einige interessante Ideen zur Funktionsweise von ODBC. Keine dieser Implementierungen ist zu 100% mit der Referenzimplementierung unter Windows vergleichbar, die vom Betreuer der ODBC-Spezifikation, dh Microsoft, erstellt wurde .
Unter Unix gibt es zwei ODBC-Treibermanager. iODBC , dessen Dokumentation für diese Frage relevant ist , wird von meinem Arbeitgeber gepflegt und unterstützt. UnixODBC ist das andere und wurde in anderen Antworten diskutiert. Diese sollen APIs sein, die einander und der Windows-Implementierung entsprechen, da beide plattformunabhängige Implementierungen des Standards sind.
In einfachen Worten, odbcinst.ini
ist eine Registrierungs- und Konfigurationsdatei für ODBC-Treiber in einer Umgebung, während odbc.ini
es sich um eine Registrierungs- und Konfigurationsdatei für ODBC-DSNs (Datenquellennamen) handelt, die normalerweise auf in der anderen registrierten Treibern basiert.
Sie hatten einige spezifische Fragen ...
1) Ich habe eine Zeile Driver = /path/to/file/.so
in beiden Dateien und die Werte unterscheiden sich manchmal. Macht das überhaupt Sinn? Wenn ja, welche herrscht vor?
Die Driver = /path/to/file.so
sollten in beiden Dateien im Allgemeinen gleich sein, wenn beide als Pfade ausgedrückt werden. In odbc.ini
kann sich dieser Eintrag stattdessen dort befinden, Driver = {name of driver}
wo der Name wie indiziert ist odbcinst.ini
. Im Allgemeinen haben Einstellungen odbc.ini
Vorrang vor widersprüchlichen Einstellungen, odbcinst.ini
wenn solche vorhanden sind.
2) Ist odbcinst.ini
ein JavaScript-ähnlicher "Prototyp" für odbc.ini
? Mit anderen Worten, wenn ich eine Reihe von DSNs mit gemeinsamen Einstellungen erstelle, kann ich gemeinsame Einstellungen von odbc.ini
in heraufstufen odbcinst.ini
?
Nein, odbcinst.ini
ist auf diese Weise kein "Prototyp". odbcinst.ini
Einstellungen sind für den Treiber relevant , jedoch nicht für die auf diesem Treiber basierenden DSNs .
3) Was ist der Unterschied zwischen Driver
und Setup
in odbcinst.ini
? Sie scheinen die gleichen Werte zu haben. Sind diese Einstellungen datenbankspezifisch oder universell?
In odbcinst.ini
der Driver =
bezieht sich auf die Treiberbibliothek, und Setup =
zum Setup - Bibliothek. Letzteres ist völlig optional, und wenn es vorhanden ist, kann es während einer Datenverbindung verwendet werden, muss es aber nicht. Es ist in erster Linie für die Verwendung durch einen ODBC-Administrator beim "Einrichten" solcher Verbindungen vorgesehen, um als DSNs gespeichert zu werden. Manchmal befinden sich diese Bibliotheken in derselben physischen Datei, müssen es aber nicht sein und befinden sich beispielsweise normalerweise nicht in der OS X-Umgebung.