java - glassfish 将数据库名称与用户名混淆

标签 java postgresql jdbc glassfish connection-pooling

我在使用 glassfish 4 时遇到了一个非常奇怪的问题。如果我为我的 JDBC 连接池指定错误 用户名/密码并尝试 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.

如果我输入真实用户名/密码,我会得到(不是预期的):

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”指定为用户名(内置 super 用户角色),它会成功执行 ping 操作。

请注意,在此期间它实际上按预期工作,但随后又开始不工作。

我使用的是 PostgreSQL 9.3 数据库。

最佳答案

As it can be seen, glassfish is interpreting "username" field as "databaseName" field.

实际上,这是 PostgreSQL 的 libpqPgJDBC 的正常行为。 如果您没有指定数据库名称,PostgreSQL 默认使用以您作为连接用户命名的数据库。

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

关于java - glassfish 将数据库名称与用户名混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22948915/

相关文章:

java - 如何使从oracle返回的结果集保持其列别名字符大小写

sql - 在准备好的语句参数中使用表列

java - 我如何编写一个 Java 代码,通过使用贪心算法设计来解决这个问题?

ruby-on-rails - 存在 5 个表单元素,但只有 4 个保存到数据库。 rails

postgresql - Odoo/OpenERP 备份/恢复失败

sql - postgres 会自动为每一行生成一个 id 吗?

java - Eclipse birt 无法建立与 derby 数据库的连接

java - 使用 commons-exec 执行复杂命令

java - 有没有办法使用 Spring Boot、Liquibase 和 sql-script 进行集成测试?

FXML 中的 JavaFX MediaView