# Probleme unter Linux mit MySQL / ODBC



## Chamäleon (11. November 2006)

Mein System ist ein AMD64 mit SuSE Linux 10.1 64-bit.
Ich habe MySQL inklusive der GUI-Tools installiert, was auch hervorragend funktioniert. Nun möchte ich von Java (Eclipse) aus auf meine Datenbank zugreifen und habe zu diesem Zweck OBDC installiert.

Paket <mysql-connector-odbc-3.51.12-1.i586.rpm>

ein "x86_64"-Paket konnte ich nicht finden. Dieses Paket habe ich mit "rpm -i" installiert. Beim Aufruf von myodbc3i -a -su -t"DSN=<DSN-Name>;DRIVER=MySQL ODBC 3.51 Driver;SERVER=localhost;UID=root" erhalte ich die Meldung

myodbc3i: symbol lookup error: /usr/lib/libmyodbc3S.so: undefined symbol: SQLAllocHandle

Warum nur, warum? *VERZWEIFELTSCHAU*

Wo ist der Fehler? In meinem System oder in meinem Kopf? Für eure Hilfe bedanke ich mich  jetzt schon mal!!

PS: Solte hier eine Antwort kommen, die sich auf den CLASSPATH bezieht: Wo stelle ich den ein? Die Antwort bitte für Newbies / Dummis formulieren!!


----------



## ishino (11. November 2006)

Keine Lösung für Dein Problem, aber ein Hinweis: wenn Du mit Java und Datenbanken arbeitest, empfielt sich eher der Einsatz von JDBC.


----------



## Chamäleon (11. November 2006)

Chamäleon hat gesagt.:


> Die Antwort bitte für Newbies / Dummis formulieren!!



OK, habe mir das folgende Paket heruntergeladen:

<mysql-connector-java-5.0.4.tar.gz>

Dieses entpackt mit: <tar xvzf>

Nun steht es in meinem Homeverzeichnis!  --> UND NUN? <--

In verschiedenen Tutorials habe ich einige Java-Quellcodes gefunden, aber keiner funktioniert. Immer lande ich im Catch-Zweig.

Was ich benötige, ist eine grundlegende Initial-Zündung. Wenn's einmal läuft, kann ich selber weiter probieren und die Hintergründe "erforschen"!


----------



## ishino (11. November 2006)

export CLASSPATH=$CLASSPATH:<home>

(Den vollständigen Pfad zur .jar angeben, die in dem tarball war, also dem JDBC-Treiber selbst).


----------



## Chamäleon (13. November 2006)

Ich glaub, ich bin echt zu blöd.
Hab jetzt folgendes gemacht. Das Connector/j Verzeichnis nach /lib verschoben.
Sieht so aus

<ich>@<MeinRechner>:/lib> ls -l mysql-connector-java-3.1.14
insgesamt 640
-rw-r--r-- 1    xxx users  37284 2006-10-18 23:35 build.xml
-rw-r--r-- 1    xxx users 111435 2006-10-18 23:35 CHANGES
-rw-r--r-- 1    xxx users  19451 2006-10-18 23:35 COPYING
drwxr-xr-x 2 xxx users    104 2006-10-18 23:35 debug
drwxr-xr-x 3 xxx users    208 2006-10-18 23:35 docs
-rw-r--r-- 1    xxx users   5253 2006-10-18 23:35 EXCEPTIONS-CONNECTOR-J
-rw-r--r-- 1    xxx users 459094 2006-10-18 23:35 mysql-connector-java-3.1.14-bin.jar
-rw-r--r-- 1    xxx users   1310 2006-10-18 23:35 README
-rw-r--r-- 1    xxx users   1355 2006-10-18 23:35 README.txt
drwxr-xr-x 7 xxx users    176 2006-10-18 23:35 src


Mein Classpath

<ich>@<MeinRechner>:/lib> echo $CLASSAPTH
/lib/mysql-connector.java-3.1.14


Java-Prog

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class TestProg1 {

	public static void main(String[] args) {

		String URL = "jdbcdbcdVideo";


		try{
//			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			Connection conn = DriverManager.getConnection
					("jdbc:mysql://localhost/myVideo?user=root");

		}
		catch (SQLException ex){
			System.err.println("Treiber konnte "
					+ "nicht geladen werden");
			System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());

			return;
		}

....

Meldung der SQLException

Treiber konnte nicht geladen werden
SQLException: No suitable driver
SQLState: 08001
VendorError: 0


Ich weiß echt nicht weiter!


----------



## ishino (13. November 2006)

```
// Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
```
...wäre falsch, auskommentieren hilft aber auch nichts. 


```
Class.forName("com.mysql.jdbc.Driver").newInstance();
```

EDIT: Dein CLASSPATH muß entweder den *Pfad zum JAR (komplett mit Dateiname)* oder das *Verzeichnis, in dem die JAR zu finden ist* enthalten. Wenn Dein Pfad aus dem letzten Posting kein Tippfehler ist, stimmt er nicht.


----------



## Chamäleon (20. November 2006)

erst mal danke für Deine Hilfe und Deine Geduld. Es läuft zwar immer noch nicht, aber ich habe inzwischen eingesehen, daß ich mich erst mal um mein Basiswissen kümmern muß. Werde, wenn ich soweit bin und immer noch das gleiche Problem habe, mich wieder melden.

Wie gesagt, zunächst mal Danke.


----------

