2017-02-22 60 views
0

我已經安裝了最新版本的PostgreSQL:9.6無效UTF-8序列與PostgreSQL驅動9.4和Postgres安裝9.6

我使用PostgreSQL驅動程序版本9.4-1206-jdbc42 - 我無法找到Maven倉庫更新。

當我嘗試連接時,我得到一個異常:

osgi.jdbc.driver.class=org.postgresql.Driver 
url=jdbc:postgresql://localhost:5432/test 
dataSourceName=test 
user=test 
password=test 
protocolVersion=3 

什麼是錯在這裏:

Caused by: java.io.IOException: Ungültige UTF-8-Sequenz: das erste Byte ist 10xxxxxx: 179 
    at org.postgresql.core.UTF8Encoding.decode(UTF8Encoding.java:98) 
    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) 
    ... 49 more 

的應用程序部署在OSGi容器,數據源使用PAX配置文件配置?這是驅動程序版本和數據庫安裝之間的不兼容性嗎?我應該降級嗎?

該數據庫使用編碼UTF-8。

在獨立Java應用程序,下面的代碼是成功的:

ConnectionPool pool = new ConnectionPool(); 
    pool.setUrl("jdbc:postgresql://localhost:5432/test"); 
    pool.setUser("test"); 
    pool.setPassword("test"); 
    pool.setProtocolVersion(3); 
    Connection conn = pool.getConnection(); 

所以它看起來更像PAX問題......

+0

'9.4-1206-jdbc42'不是那麼古老,但最近的是['42.0.0'](https://jdbc.postgresql.org)[在maven central](https:// search .maven.org /#artifactdetails%7Corg.postgresql%7Cpostgresql%7C42.0.0.jre7%7Cbundle)(postgresql jdbc驅動程序在版本編號方面跳了很多以避免這種誤解:9.4應該支持9.6服務器) - 同樣,它也是2日齡現在:) – pozs

回答

1

實際的問題是其他地方。在pg_hba.conf中將授權方法從'md5'更改爲'trust'之後,我收到了真正的錯誤消息:無法找到「test」角色。

PAX已將尾隨空格附加到用戶名,這很容易監控,並且PostgreSQL驅動程序無法解碼來自服務器的錯誤消息。

相關問題