【问题标题】:glassfish confusing database name with usernameglassfish 将数据库名称与用户名混淆
【发布时间】:2014-05-21 20:24:34
【问题描述】:

我在 glassfish 4 上遇到了非常奇怪的问题。如果我为我的 JDBC 连接池指定 wrong 用户名/密码并尝试 ping,我得到(如预期的那样):

An error has occurred
Ping Connection Pool failed for scrumkinPool. Connection could not be allocated because: FATAL: password authentication failed for user "notAnActualUser" Please check the server.log for more details.

如果我输入 real 用户名/密码,我会得到(NOT 预期):

An error has occurred Ping Connection Pool failed for scrumkinPool.
Connection could not be allocated because: FATAL: database "anActualUser" does not exist Please check the server.log for more details.

可以看出,glassfish 将“用户名”字段解释为“数据库名称”字段。 但如果我将“postgres”指定为用户名(内置超级用户角色),它会成功 ping。

请注意,在这两者之间它实际上可以正常工作,但后来又开始不正常了。

我使用的是 PostgreSQL 9.3 数据库。

【问题讨论】:

    标签: java postgresql jdbc glassfish connection-pooling


    【解决方案1】:

    可以看出,glassfish 将“用户名”字段解释为“数据库名称”字段。

    实际上,对于 PostgreSQL 的 libpq 和 PgJDBC,这是正常的行为。 如果您不指定数据库名称,PostgreSQL 默认使用以您连接的用户命名的数据库。

    我想说你实际上并没有指定你想要连接的数据库,所以它回退到这个默认值。很难确定,因为您没有显示您的配置。

    【讨论】:

    • 不,实际上是 URL 参数是罪魁祸首……看我的回答。
    • @user2340939 这是有道理的,因为 JDBC URL 指定了要连接的数据库。
    【解决方案2】:

    Glassfish 4 和 PostgreSQL 9.3 也有同样的问题。有时可以通过删除连接池并重新添加来临时解决。我发现永久解决它的唯一方法是降级 JDBC 驱动程序。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。

      我无法在上面明确看到答案,但意识到尽管提供了“databaseName”属性字段,glassfish 并未将其更新到 URL 中。因此,我指定了一个 databaseName,但由于默认情况下它不在 URL 中,因此 postgres 没有接收它并且默认为用户名。

      解决方案是在 databaseName 属性中指定 databaseName 并将其添加到主机名之后的 URL。

      【讨论】:

        【解决方案4】:

        在 GlassFish 4 和 postgresql9.3 中,我通过将 databaseName 添加到 Url 来解决此问题。 像这样:

        jdbc:postgresql://localhost/databaseName?loginTimeout=...

        如果我清除 URL 字段也可以使用

        【讨论】:

          【解决方案5】:

          Kiril 的解决方法有效!谢谢!

          将属性 url 更新为

          jdbc:postgresql://localhost/databaseName?

          有一个错误...

          我正在使用 - Adminconsole Glasfish 并且有同样的现象 -

          JDBC42 Postgresql Driver, Version 9.4-1207

          GlassFish Server 开源版 4.1(内部版本 13)

          Ubuntu 14.04.3 LTS

          问候帆

          【讨论】:

            猜你喜欢
            • 2010-09-27
            • 1970-01-01
            • 1970-01-01
            • 2018-10-09
            • 2012-03-03
            • 2014-04-18
            • 2011-10-17
            • 1970-01-01
            • 2018-08-20
            相关资源
            最近更新 更多