Gå til innhold

Problemer med tilkobling til lokal database


Anbefalte innlegg

Hei.

 

Jeg sliter som sagt med å koble til min MySQL database på ubuntu-linuxen min. Jeg bruker Connector/J som databasedriver, men tydeligvis vil ikke Java/OS'et la meg koble på. Her er koden jeg lagde for å prøve og logge meg inn:

 

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

public class DatabaseApp {

public static void main(String[] args) {
	Database db = new Database("jdbc:mysql://localhost/Test user=root&password=********");
	db.connect();
}

}

class Database {

private String url;

public Database(String url) {
	this.url = url;
}

public void connect() {
	try {
		Class.forName("com.mysql.jdbc.Driver").newInstance();
		Connection c = DriverManager.getConnection(url);
		System.out.println("Databasen er oppe å kjører...");
		c.close();
	} catch(Exception ex) {
		System.out.println("Kunne i opprette kontakt med databasen: \n");
		ex.printStackTrace();
	}
}
}

 

Når jeg kjører denne koden får jeg dette unntaket:

 

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Access denied for user ''@'localhost' to database 'Test user=root&password=********'
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1026)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)
  at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3923)
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1273)
  at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2031)
  at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
  at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298)
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
  at java.sql.DriverManager.getConnection(libgcj.so.81)
  at java.sql.DriverManager.getConnection(libgcj.so.81)
  at Database.connect(Database.java:15)
  at DatabaseApp.main(DatabaseApp.java:5)

 

Noen som kan komme med noen klok forklaring på dette? Fikk en lignende melding da jeg prøvde å kjøre MySQL klienten via terminal, men endret kommandoen fra

 

$ mysql

 

til

 

$ mysql -uroot -p

 

og da gikk det plutselig fint.

 

På forhånd takk :D

Lenke til kommentar
Videoannonse
Annonse

om en ser litt på feilmeldinga så ser man fort at:

 

Access denied for user ''@'localhost' to database 'Test user=root&password=********'

 

med andre ord jeg tviler på at du har en database som heter "Test user=root&password=********".

 

 

uansett, prøv heller dette:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class mySQLtest {


public static void main(String[] args) {
	Connection con = null;

	try {
	  Class.forName("com.mysql.jdbc.Driver").newInstance();
	  con = DriverManager.getConnection("jdbc:mysql://localhost/mindatabase",
		"brukernavn", "passord");

	  if(!con.isClosed())
		System.out.println("Tilkoblet");

	} catch(Exception e) {
	  System.err.println("Exception: " + e.getMessage());
	} finally {
	  try {
		if(con != null)
		  con.close();
	  } catch(SQLException e) {}
	}
}

}

 

håper dette hjelper!

Endret av Leken
Lenke til kommentar

Jeg har en database som heter Test jo. Oprettet den via MySQL klienten/kommandolinja. Når jeg skriver "show databases;" kommer den ihvertfall opp.

 

Men uansett, prøvde endringene, og fikk en annen feilmelding nå:

java.sql.SQLException: Unexpected exception encountered during query.
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
  at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2581)
  at com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1751)
  at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3425)
  at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2045)
  at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
  at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298)
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
  at java.sql.DriverManager.getConnection(libgcj.so.81)
  at java.sql.DriverManager.getConnection(libgcj.so.81)
  at Database.main(Database.java:13)
Caused by: java.io.CharConversionException
  at gnu.gcj.convert.Input_iconv.read(libgcj.so.81)
  at java.lang.String.init(libgcj.so.81)
  at java.lang.String.<init>(libgcj.so.81)
  at com.mysql.jdbc.SingleByteCharsetConverter.<init>(SingleByteCharsetConverter.java:152)
  at com.mysql.jdbc.SingleByteCharsetConverter.initCharset(SingleByteCharsetConverter.java:107)
  at com.mysql.jdbc.SingleByteCharsetConverter.getInstance(SingleByteCharsetConverter.java:85)
  at com.mysql.jdbc.ConnectionImpl.getCharsetConverter(ConnectionImpl.java:2759)
  at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java:679)
  at com.mysql.jdbc.Buffer.writeStringNoNull(Buffer.java:663)
  at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2025)
  at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536)
  ...9 more

Lenke til kommentar

beklager, var _litt_ trøtt i går..

det programmet ditt trodde første gangen var at databasen ikke bare hette "Test", men "Test user=root&password=********"

 

 

import java.sql.Connection;
import java.sql.DriverManager;
public class DatabaseApp 
{	
public static void main(String[] args) 
{		
	Database db = new Database("jdbc:mysql://localhost/test", "brukernavn", "passord");		
	db.connect();	
	}
}

class Database
{		
private String url;	
private String username;
private String password;
public Database(String url, String username, String password) 
{		
	this.url = url;	
	this.username = username;
	this.password = password;
	}		
public void connect() 
{		
	try 
	{			
		Class.forName("com.mysql.jdbc.Driver").newInstance();			
		Connection c = DriverManager.getConnection(url, username, password);			
		System.out.println("Databasen er oppe å kjører...");			
		c.close();		} 
	catch(Exception ex) {			
		System.out.println("Kunne ikke opprette kontakt med databasen: \n");			
		ex.printStackTrace();		
		}
	}
}

 

sånn, håper det virker denne gangen :)

 

Som du ser har jeg brukt argumentene brukernavn og passord i tillegg til url, da det er enklere å bruke igjen ved DriverManager.getConnection som trenger de tre.

 

men den siste feilmeldingen er jeg ikke sikker på..

Endret av Leken
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...