使用postgresql驱动程序9.4和Postgres安装9.6的UTF-8序列无效

时间:2017-02-22 08:05:16

标签: java postgresql jdbc osgi

我安装了最新的PostgreSQL版本:9.6

我使用的是postgresql驱动版本9.4-1206-jdbc42 - 我无法在maven资源库中找到更新版本。

当我尝试连接时,我得到一个例外:

 [{
        type: 'line',
        name: 'AssaultCrimeTheme',
        data: [3, 2, 1, 3, 4]
    }, {
        type: 'line',
        name: 'BurglaryCrimeTheme',
        data: [2, 3, 5, 7, 6]
    }, {
        type: 'column',
        name: 'AssaultCrimeTheme',
        data: [3, 2, 1, 3, 4]
    }, {
        type: 'column',
        name: 'BurglaryCrimeTheme',
        data: [2, 3, 5, 7, 6]
    },]

应用程序部署在OSGi容器中,数据源使用PAX配置文件配置:

-(void)mapView:(NMAMapView *)mapView didSelectObjects:(NSArray *)objects
{
  for (int j=0; j<[objects count]; j++) {

      if ([[objects objectAtIndex:j] isKindOfClass:[NMAMapRoute class]])  {
        NSLog(@"NMAMapRoute:");
      }
   }
}

这里有什么问题?这是驱动程序版本和数据库安装之间的不兼容吗?我应该降级吗?

数据库使用UTF-8编码。

在独立的Java应用程序中,以下代码成功:

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

所以它看起来更像是PAX问题......

1 个答案:

答案 0 :(得分:1)

实际问题出在其他地方。在pg_hba.conf中将授权方法从'md5'更改为'trust'后,我收到了真正的错误消息:无法找到角色“test”。

PAX已将尾随空格附加到用户名,这很容易监控,PostgreSQL驱动程序无法解码来自服务器的错误消息。