代码之家  ›  专栏  ›  技术社区  ›  EasterBunnyBugSmasher

从wildfly访问postgresql时发生编码错误

  •  0
  • EasterBunnyBugSmasher  · 技术社区  · 5 年前

    postgres数据库配置为UTF8(默认)。使用pgadmin,我从备份中恢复,它正确地显示了德语Umlaute。 但当我启动wildfly时,我得到以下错误:

    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
    

    对不起,德国的错误信息。我不知道为什么这封信是用德语写的。

    1 回复  |  直到 5 年前
        1
  •  0
  •   EasterBunnyBugSmasher    4 年前

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

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

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

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

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