kjey Skrevet 3. juni 2008 Del Skrevet 3. juni 2008 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 Lenke til kommentar
NevroMance Skrevet 3. juni 2008 Del Skrevet 3. juni 2008 Du må gi brukeren tilgang til selve databasen. Vet ikke hvordan en gjør det, da jeg ikke har brukt noe databaser selv. Men hvertfall det feilmeldingen sier. At brukeren som kjører scriptet ikke har tilgang til databasen. Lenke til kommentar
Deezire Skrevet 3. juni 2008 Del Skrevet 3. juni 2008 Gi brukeren permission til databasen via f.eks. phpmyadmin. Lenke til kommentar
Ducktoy Skrevet 3. juni 2008 Del Skrevet 3. juni 2008 (endret) 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 4. juni 2008 av Leken Lenke til kommentar
kjey Skrevet 4. juni 2008 Forfatter Del Skrevet 4. juni 2008 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
Ducktoy Skrevet 4. juni 2008 Del Skrevet 4. juni 2008 (endret) 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 4. juni 2008 av Leken Lenke til kommentar
kjey Skrevet 4. juni 2008 Forfatter Del Skrevet 4. juni 2008 Nope fungerer ikke. Kanskje jeg skal prøve å installere MySQL på nytt... Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå