unixODBC macht mich echt fertig.
Nachdem ich die ODBC-Verbindung zu meiner Oracle-Datenbank scheinbar erfolgreich eingerichtet hatte, funktionierten die meisten DB-Funktionen mit dem danach installieren SquirreL SQL Client nicht.
Dauernd flog die Verbindung zum DBMS mit der Fehlermeldung: “[unixODBC][Driver Manager]Driver does not support this function” ab.
Ich schob den Fehler dem JDBC-Teil der Java-Anwendung zu (v.a. wg. der Meldung “Das Laden des JDBC-Treibers “{0}” ist fehlgeschlagen.” und dem Umstand, dass der Fehler in einer testweise angelegten OOO-Base-Datenbank nicht auftrat), und richtete für das Programm dann die Verbindung über den “Oracle OCI Driver” ein. Das funktionierte auch einwandfrei.
Als ich jedoch gerade anfing, eine QT-Anwendung zu erstellen, die auch über ODBC an meine Oracle-Instanz andocken sollte, rieselte es wieder die “Driver does not support..”-Fehler.
Der Connect funktionierte, die Abfragen blieben allesamt hängen.
Und weil in der OSS-Version von QT keinen OCI-Treiber gibt, musste ich mich nun zwangsläufig mit dem Fehler auseinandersetzen.
Ein Trace der unixODBC-Verbindung ergab folgende Log-Einträge:
[ODBC][25990][SQLSetStmtAttr.c][243]
Entry:
Statement = 0×811f6d0
Attribute = SQL_ATTR_CURSOR_TYPE
Value = 0×3
StrLen = -5
[ODBC][25990][SQLSetStmtAttr.c][356]Error: IM001
[ODBC][25990][SQLGetDiagRec.c][710]
Entry:
Statement = 0×811f6d0
Rec Number = 1
SQLState = 0xbf916856
Native = 0xbf916860
Message Text = 0xbf916867
Buffer Length = 512
Text Len Ptr = 0xbf916864
[ODBC][25990][SQLGetDiagRec.c][747]
Exit:[SQL_SUCCESS]
SQLState = IM001
Native = 0xbf916860 -> 0
Message Text = [[unixODBC][Driver Manager]Driver does not support this function]
Endlich hatte ich Futter fuer meinen Freund Scroogle. Gleich im ersten Link des Suchergebnisses fand ich eine vermeintliche Lösung: die “aktuelle” Version 2.2.12 von unixODBC - immerhin auch schon fast zwei Jahre veröffentlicht - sollte meine Verbindungsprobleme lösen.
Ein Debian-Paket dafür war nirgendwo in Sicht, also musste ich wohl selber den Compiler anschmeißen.
Blöd dabei wieder:
Vom noch installierten unixodbc ist das immer noch für die Eclipse-Umgebungen für Aptana und QT benötigte Java-Runtime-Environment abhängig. Ich entschied mich vorerst gegen die Deinstallation und für eine Parallelinstallation der Version 2.2.12 nach /opt.
Nach dem Übersetzen und der Installation der Software trug ich, schnell und schmutzig /opt/unixodbc/lib als erste Zeile in die ld.so.conf ein und erneuerte den Cache.
Und siehe da: meine QT-Anbindung schmeißt keine Fehler mehr.
Dann werde ich das JRE wohl auch händisch installieren und die Ubuntu-Pakete von unixodbc und JRE vom System verbannen.
