2015-11-18 7 views
7

Ich habe den folgenden Code in die DatenbankIllegal UTF-8-Sequenz mit postgreSQL Datenbank verbinden

String host = "jdbc:postgresql://localhost:5432/name"; 
    String username = "user"; 
    String password = "pass"; 
    Connection c = null; 
    try { 
     Class.forName("org.postgresql.Driver"); 
     c = DriverManager.getConnection(host, username, password); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     System.err.println(e.getClass().getName() + ": " + e.getMessage()); 
     System.exit(0); 
    } 
    System.out.println("Opened database successfully"); 
} 

und ich erhalte den folgenden Fehler verbinden:

org.postgresql.util.PSQLException: El intento de conexión falló. 
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:257) 
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:65) 
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:149) 
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:35) 
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22) 
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:47) 
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:30) 
at org.postgresql.Driver.makeConnection(Driver.java:414) 
at org.postgresql.Driver.connect(Driver.java:282) 
at java.sql.DriverManager.getConnection(DriverManager.java:664) 
at java.sql.DriverManager.getConnection(DriverManager.java:247) 
at database_console.DBConnect.main(DBConnect.java:22) 
Caused by: java.io.IOException: Illegal UTF-8 sequence: byte 2 of 4 byte sequence is not 10xxxxxx: 110 
at org.postgresql.core.UTF8Encoding.checkByte(UTF8Encoding.java:28) 
at org.postgresql.core.UTF8Encoding.decode(UTF8Encoding.java:117) 
at org.postgresql.core.PGStream.ReceiveString(PGStream.java:327) 
at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:424) 
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:203) 
... 11 more 
org.postgresql.util.PSQLException: El intento de conexión falló. 

„el intento de conexión falló "bedeutet" Verbindungsversuch gescheitert ".

Bitte helfen Sie mir damit Ich weiß nicht, was zu tun ist.

EDIT: Ich habe auch den Server-Codierung und es sagt, es UTF8 ist

+0

Der Benutzer und das Passwort sind wirklich "Benutzer" und "Pass" oder enthalten sie nicht-ASCII-Zeichen? Was ist die Version des Servers und der JDBC-Treiber? – RealSkeptic

+0

Der Benutzer und Pass sind eine Kombination aus 4 Buchstaben und Zahlen, nichts Seltsames. Die JDBC-Treiberversion ist 9.4-1205 jdbc4 und die Serverversion ist 9.1.14 –

+0

Sind Sie sicher, dass Postgresql auf Port 5432 auf Ihrem Computer ausgeführt wird? Könnte auf dem Port noch etwas anderes laufen? – RealSkeptic

Antwort

1

Ich denke, das Problem, dass die Java-Strings sein könnten, sind UTF-16 und Postgresql UTF8 Parameter benötigt.

versuchen, diese Syntax:

Properties props = new Properties(); 
props.setProperty("user","user"); 
props.setProperty("password","pass"); 
c = DriverManager.getConnection(host, props); 

hoffe, das hilft

+1

Danke @MtwStark Es funktioniert für mich –

1

Ich weiß, diese Frage jetzt ist ein bisschen alt. Aber ich hatte das gleiche Problem und erwies sich als die Verbindung METHODE in pg_hba.conf Datei.

ich den Standard empfohlen md5 Konfiguration hatte, aber es scheint, als ob es ein Fehler in einigen Versionen des JDBC-Treibers ist (https://www.postgresql.org/message-id/3E43175C.5020209%40xythos.com)

es so fixierte ich einfach durch md5 zu Vertrauen in denen sie wandelnden pg_hba.conf Datei, so dass es Passwörter im Klartext akzeptiert.

Gastgeber alle alle 127.0.0.1/32 Vertrauen

hoffe, das hilft jemand

0

Wenn Sie in Windows verfügbar sind, müssen Sie wie doppelte Schrägstriche verwenden:

String host = "jdbc:postgresql:////localhost:5432//name"; 
0

In meinem Fall war das Problem trivial, aber die Ausnahme unklar.

Das einzige Problem in meiner Verbindungs-URL war der DBNAME am Ende der Verbindung. Der DB-Name existierte einfach nicht, wurde nie erstellt und als Endergebnis erhielt ich diese Rückmeldung ungültigen Charakters.

Stellen Sie sicher, dass Ihre Verbindungseinstellungen tatsächlich gültig sind, überprüfen Sie Ihren DB-Namen in der URL. Bevor Sie versuchen, eine Verbindung zur Datenbank herzustellen, verwenden Sie pgadmin, um zu überprüfen, ob die Datenbank vorhanden ist.

Verwandte Themen