• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

ODBCConfig: symbol lookup error

f.gruber

Hacker
Hallo,
ich bekomme bei dem Versuch eine bereits erstellte UserDSN zu konfigurieren folgende Fehlermeldung:
Code:
ODBCConfig: symbol lookup error: /usr/lib/unixODBC/libmyodbc3S.so: undefined symbol: SQLAllocHandle
Mit dieser Fehlermeldung beendet sich ODBCConfig, sobald ich im Fenster "Connector / ODBC Configuration"
auf die Schaltfläche "Test" klicke bzw. irgendeine Auswahlliste anklicke, wie z.B.: unter den Connect Options die Auswahlliste "Character Set".
Es ist aber möglich, manuell Einträge in die einzelnen Felder vorzunehmen, also z.B.: "latin1". Der Eintrag wird in der ~/.odbc.ini gespeichert und überhaupt funktioniert die UserDSN.

Trotzdem finde ich dieses Verhalten des grafischen Konfigurationstools lästig. Kann man was dagegen tun?

odbcinst -j liefert folgendes:
Code:
odbcinst -j
unixODBC 2.2.12
DRIVERS............: /etc/unixODBC/odbcinst.ini
SYSTEM DATA SOURCES: /etc/unixODBC/odbc.ini
USER DATA SOURCES..: /local/home/grfe/.odbc.ini

System: openSUSE 11.3
 

P6CNAT

Advanced Hacker
Hi,

die Library libmyodbc3S.so gehört zum RPM-Paket MyODBC-unixODBC

MyODBC-unixODBC - ODBC-Schnittstelle zur Kommunikation mit MySQL, kompiliert mit unixODBC

MyODBC is an interface for communication with MySQL. It is one of the most popular ODBC drivers in the open source market, used by many users to access the MySQL functionality. It is compiled with unixODBC.

Am besten du prüfst in Yast ob es eine neue Version des Paketes gibt, bzw. ob deine sonstigen ODBC Pakete mit der MyODBC-unixODBC Version zusammenpassen.

Gruß
Georg
 
OP
F

f.gruber

Hacker
P6CNAT schrieb:
Am besten du prüfst in Yast ob es eine neue Version des Paketes gibt, ...
Das ist die Version von MyODBC-unixODBC, die ich installiert habe. Scheint die neueste zu sein, die verfügbar ist.
Code:
Informationen für Paket MyODBC-unixODBC:
Repository: @System
Name: MyODBC-unixODBC
Version: 3.51.27r695-13.2
Arch: i586
Hersteller: obs://build.opensuse.org/server:database
Installiert: Ja
Status: aktuell
Installierte Größe: 787,0 KiB
Zusammenfassung: ODBC-Schnittstelle zur Kommunikation mit MySQL, kompiliert mit unixODBC
...
P6CNAT schrieb:
... ob deine sonstigen ODBC Pakete mit der MyODBC-unixODBC Version zusammenpassen.
Wie kann ich das überprüfen?
 

P6CNAT

Advanced Hacker
Hi,

ich habe jetzt nochmal genauer geguckt und gemerkt, dass es nur eine Paketabhängigkeit gibt.

MyODBC-unixODBC mit unixODBC kompiliert.

da sollte man eigentlich erwarten, dass die Pakete zusammen passen.

Ich benutze MySQL / mysql-connector-java / OpenOffice, deshalb kann ich deinen Fehler nicht reproduzieren bzw. ausschliessen.

Spaßeshalber habe ich aber mal im Netz nach "undefined symbol: SQLAllocHandle" gesucht.
Der Fehler kommt wohl öfters vor, hier zwei Links auf die ich gestoßen bin.

http://bugs.mysql.com/bug.php?id=40564
http://forums.oracle.com/forums/thread.jspa?threadID=1035165&tstart=0

Gruß
Georg
 
OP
F

f.gruber

Hacker
P6CNAT schrieb:
Der Fehler kommt wohl öfters vor, hier zwei Links auf die ich gestoßen bin.
http://bugs.mysql.com/bug.php?id=40564
http://forums.oracle.com/forums/thread.jspa?threadID=1035165&tstart=0
Daraus werde ich nicht klug.

Vielleicht sollte man den Treiber selbst kompilieren, wovon ich allerdings keine Ahnung habe.
Geht so was überhaupt?

Zur Fehlermeldung:
Was heißt das überhaupt:
Code:
undefined symbol: SQLAllocHandle
Was für ein "Symbol" fehlt da?
 

P6CNAT

Advanced Hacker
Hallo,

wenn die Quellcodes zugänglich sind, man kann auch Treiber selbst kompilieren.
Mir ist das zu kompliziert und das make Tool habe ich auch nicht wirklich verstanden.

Was heißt das überhaupt
Nach meinem Verständnis wird in der Library "/usr/lib/unixODBC/libmyodbc3S.so" versucht ein Unterprogrammm, Funktion oder Konstante mit dem Namen "SQLAllocHandle" aufzurufen, aber nicht gefunden.
Immerhin ist der Name sprechend, ein Handle ist der Verweis auf ein Objekt, mit Alloc soll es zugewiesen werden.
Da der Fehler im Zusammenhang mit allen möglichen Datenbanken (Oracle, Sybase, DB2, MySQL) vorkommt, vermute ich, dass das "Symbol" von der Datenbanksoftware zur Verfügung gestellt werden muss.

Ich lasse mich aber gerne von einem C/C++ Programmierer korrigieren.

Gruß
Georg
 
Oben