Ich versuche, von einer Access-Datenbank mit MDBTools -Treibern zu lesen, um eine odbc_connect
auf Ubuntu 11.10 auszuführen. Es funktioniert gut, wenn Sie das DSN-Setup in /etc/odbc.ini
verwenden.
Im Folgenden finden Sie die Inhalte von /etc/odbc.ini
:
Das Treiberattribut in odbc.ini
references MDBToolsODBC
, also, hier ist mein ODBC Setup in /etc/odbcinst.ini
:
Mein Problem ist, wenn ich $conn = odbc_connect('logindb','','');
verwende, muss ich den fest codierten Wert für den Speicherort der Datenbank verwenden. Im Idealfall möchte ich den ersten Parameter von odbc_connect
mit einer DSN-losen Verbindung angeben, so dass meine Datenbankdatei eine Variable sein kann (wird von verschiedenen dbs lesen). Etwas wie:
Ich habe es auch ohne das Präfix odbc: versucht, aber es hat nicht funktioniert. Kann mir jemand sagen, warum die Angabe des DSN funktioniert, aber wenn ich versuche, es im Handumdrehen unter Verwendung von ähnlichen Attributen zu spezifizieren, funktioniert es nicht? Ich denke, dass es mit den Parametern und dem Inhalt des ersten Parameters in der DSN-losen Verbindung zu tun hat. Wie immer wird jede Hilfe sehr geschätzt.
Ich denke, dass es das nicht unterstützt. Ausgehend von der Quelle des eigentlichen Treibers sehen Sie, dass es die zu überprüfenden Parameter lädt, prüft, ob ihm eine DNS-Zeichenfolge zugewiesen wurde, prüft die INI-Dateien und stellt die Parameter ein, wenn keine Fehler aufgetreten sind.
als Referenz von odbc.c neuesten MDB-Tools (mdbtools-0.6pre1)
%Vor%Wenn Sie in connectparams.c überprüfen, sucht ExtractDSN speziell nach der DSN = string
%Vor%Und LookupDSN sucht nach Inifiles oder kehrt sofort mit TRUE zurück, abhängig von der Precompilereinstellung HAVE_SQLGETPRIVATEPROFILESTRING.
So gegeben
%Vor%funktioniert nur mit den Daten, die es von den zwei vorherigen Funktionen erhalten hat, ich denke, es unterstützt keine DSN-weniger. Nur entweder ein richtiger DSN = String oder Ini-Dateien.