从 Wildfly 访问 PostgreSQL 的编码错误



只是设置新计算机,我无法让我的野蝇连接到邮局。我使用的是与旧计算机上相同的独立.xml。postgres 数据库配置为 UTF8(缺省值)。Usign pgadmin,我从备份中恢复,它正确显示德语变音符号。但是当我开始野蝇时,我收到以下错误:

Caused by: java.io.IOException: Ung³ltige UTF-8-Sequenz: das erste Byte ist 10xxxxxx: 187
        at org.postgresql.core.UTF8Encoding.decode(UTF8Encoding.java:104)
        at org.postgresql.core.PGStream.ReceiveString(PGStream.java:331)
        at org.postgresql.core.v3.ConnectionFactoryImpl.readStartupMessages(ConnectionFactoryImpl.java:705)
        at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213)
        ... 35 more

很抱歉出现德语错误消息。我不知道为什么这条消息是德语的。

任何想法可能出了什么问题?

事实证明,解析来自不同语言环境的错误消息存在问题。显然,postgresql jdbc 驱动程序只能处理英文错误消息,并且存在错误。

根本原因:我对数据库中的表犯了拼写错误。这导致Postgresql抛出错误。但它抛出了带有德语错误消息的错误。postgresql jdbc 驱动程序无法解析它并抛出一个新错误,如问题所示。

我修复了原始拼写错误,随着根本原因的消失,没有更多的错误消息需要解析。

一年后(现在),我终于通过编辑独立版解决了语言环境问题.xml:

<datasource jndi-name="java:jboss/datasources/PostgresDS" ...>
    ...
    <new-connection-sql>SET lc_messages TO 'en_US.UTF-8'</new-connection-sql>
    ...
</datasource>

最新更新