ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
641
641
EMPFEHLEN
-
Hi,
seit gestern versuch ich nun zum erstenmal mit einem javaprogramm auf eine Datenbank zuzugreifen.
Unter Knoppix also Debian habe ich die Pakete mysql-client und mysql-server installiert.
Ich habe folgende mysql befehle verwendet zur Anlegung der Datenbank:
CREATE DATABASE DokNetDB;
USE DokNetDB;
CREATE TABLE Dokumente (Name CHAR(255), Ausgabe CHAR(10));
INSERT INTO Dokumente VALUES("Dokument 1", "1999-01-00");
INSERT INTO Dokumente VALUES("Dokument 3", "1999-02-00");
INSERT INTO Dokumente VALUES("Dokument 4", "1999-04-00");
Nach dem Start von Mysql (mittels /etc/init.d/mysql start) habe ich folgendes Programm kompiliert:
-----------------------------------------------------------------------------------------
import java.sql.*;
public class HelloWorld
{
public static void main(String argv[])
{
try
{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
}
catch(Exception exception)
{
System.out.println("Can't find Database driver class:"+exception.getMessage());
return;
}
try
{
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/DokNetDB?user=root");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT Name, Ausgabe FROM Dokumente");
System.out.println("Dokument | Ausgabedatum:");
System.out.println("-------------------------------");
while (resultSet.next())
{
System.out.print(resultSet.getString(1));
System.out.print(" | ");
System.out.println(resultSet.getString("Ausgabe"));
}
resultSet.close();
statement.close();
connection.close();
}
catch(SQLException sqlException)
{
System.out.println(sqlException.getMessage());
return;
}
}
}
----------------------------------------------------------------------------------------
Ich hab einen passenden Treiber aus dem Netz gesucht und den Klassenpfad gesetzt:
export CLASSPATH=$CLASSPATH:/home/astryx/mm.mysql-2.0.4-bin.jar
Wenn ich das Programm dann ausführe, tritt aber eine Exception im try-Block auf:
-------------------------------------------------------------------------------------------
Cannot connect to MySQL server on localhost:3306. Is there a MySQL server running on the machine/port you are trying to connect to? (java.net.ConnectException)
-------------------------------------------------------------------------------------------
Ausführlicher lautet die Exception-Meldung folgenermaßen:
------------------------------------------------------------------------------------------
SQLException : Cannot connect to MySQL server on localhost:3306. Is there a MySQL server running on the machine/port you are trying to connect to? (java.net.ConnectException)java.sql.SQLException: Cannot connect to MySQL server on localhost:3306. Is there a MySQL server running on the machine/port you are trying to connect to? (java.net.ConnectException)
at org.gjt.mm.mysql.Connection.connectionInit(Connection.java:331)
at org.gjt.mm.mysql.jdbc2.Connection.connectionInit(Connection.java:89)
at org.gjt.mm.mysql.Driver.connect(Driver.java:167)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:193)
at HelloWorld.main(HelloWorld.java:33)
Cannot connect to MySQL server on localhost:3306. Is there a MySQL server running on the machine/port you are trying to connect to? (java.net.ConnectException)
--------------------------------------------------------------------------------------------
MySQL wurde erst gestern mit apt-get installiert. Es wurden keine Einstellungen an MySQL vorgenommen (wie z.B. Passwörter). Der Treiber für mysql (org.gjt.mm.mysql.Driver) wurde anscheinend erkannt. Nur die Verbindung zwische jdbc und mysql funktioniert nicht!
"mysqlshow" zeigt die erstellte Table "DokNetDB" an.
Im mysql-monitor erhalte ich mit dem "status"-Befehl folgende Ausgabe:
-------------------------------------------------------------------------------------------
mysql> status
--------------
mysql Ver 12.22 Distrib 4.0.20, for pc-linux-gnu (i386)
Connection id: 10
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Server version: 4.0.20-log
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: latin1
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 19 min 53 sec
Threads: 1 Questions: 47 Slow queries: 0 Opens: 14 Flush tables: 1 Open tables: 8 Queries per second avg: 0.039
-------------------------------------------------------------------------------------------
Wo könnte der Fehler liegen (und v.a. wie lässt er sich beheben)?
mfg
-
Hast Du es schonmal mit einer neueren Version vomMySql Java Treiber versucht ?
Als ich benutze mysql-connector-java-3.1.0-alpha-bin und es funktioniert wunderbar bei mir.
Als Backend benutze ich auch Debian mit Mysql.
Den Treiber würed ich bei www.http://www.mysql.org runteladen.
Ansonsten kann ich keinen Fehler feststellen.
-
30.07.04 14:57 #3
- Registriert seit
- Jun 2004
- Ort
- Österreich(Salzburg)
- Beiträge
- 73
Aktivieren die Netzwerkverbindung der Mysql.
Findet sich in der /etc/mysql/?
Eine Zeile "skip-networking" muß auskommentiert werden. Danach mysql neu starten.
hth
cybiProjekt Amaris (Howtos zum Thema Debian Webserver / Java)
-
Ja das ist richtig mit dem "skip-networking". Aber dies hat für localhost keine Auswirkung!
Mfg Kuniberd
-
30.07.04 15:50 #5
- Registriert seit
- Jun 2004
- Ort
- Österreich(Salzburg)
- Beiträge
- 73
Doch, wenn du über den Port zugreifen willst hat dies durchaus eine Auswirkung.
Die lokalen Komponenten greifen nämlich in der Regel nicht über den Port sondern direkt über einen Socket auf die Mysql zu.
Wenn skip-networking aktiv ist, wird mysql nicht auf dem 3306er lauschen. Weder am localen Interface, noch an irgendeinem anderen.
Und da eben deine Fehlermessage besagt das der Prozess nicht auf den 3306er zugreifen konnte, kann es sich nur um diesen Fall handeln. (Nein deine Applikation versucht nicht über den Socket zuzugreifen. Sonst würde es eine andere Art der Fehlermessage ergaben)
cybiProjekt Amaris (Howtos zum Thema Debian Webserver / Java)
Ähnliche Themen
-
LINUX - PHP - MYSQL - ODBC - ACCESS Verbindung?
Von WACSF im Forum PHPAntworten: 0Letzter Beitrag: 23.08.07, 13:55 -
Probleme unter Linux mit MySQL / ODBC
Von Chamäleon im Forum Linux & UnixAntworten: 6Letzter Beitrag: 20.11.06, 08:13 -
MySQL-Programmierung mit C++API unter LINUX
Von Peter Reißig im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 02.03.04, 12:54 -
hab ein broblem mit mysql c api unter linux
Von sambahippy im Forum C/C++Antworten: 0Letzter Beitrag: 03.11.03, 19:27 -
MySQL unter Linux
Von TheVirus im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 09.03.02, 21:11





Zitieren
Login





