当前位置: 首页 > 知识库问答 >
问题:

为什么 HikariCP 说“属性数据库在目标类组织 postgresql.ds.PG 简单数据源上不存在”?

翟源
2023-03-14

我正在尝试将各种PostgreSQL JDBC驱动程序属性设置到我的HikariCP池中,但出于某种原因,它声明这些属性不存在。为什么会这样?我是否使用了错误的参数名称?

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource

import java.sql.Connection;
import java.sql.SQLException;

public class HikariTest {
    public static void main(String[] args) throws SQLException {
        HikariConfig config = new HikariConfig();
        config.setDataSourceClassName("org.postgresql.ds.PGSimpleDataSource");
        config.setUsername("[REDACTED]");
        config.setPassword("[REDACTED]");
        config.addDataSourceProperty("host", "[REDACTED");
        config.addDataSourceProperty("database", "[REDACTED]");
        config.addDataSourceProperty("ssl", true);
        config.addDataSourceProperty("sslcert", "[REDACTED]");
        HikariDataSource ds = new HikariDataSource(config);
        Connection conn = ds.getConnection();
    }
}

输出:

Exception in thread "main" java.lang.RuntimeException: Property database does not exist on target class org.postgresql.ds.PGSimpleDataSource
    at com.zaxxer.hikari.util.PropertyElf.setProperty(PropertyElf.java:127)
    at com.zaxxer.hikari.util.PropertyElf.lambda$setTargetFromProperties$0(PropertyElf.java:51)
    at java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603)
    at java.base/java.util.Properties.forEach(Properties.java:1422)
    at com.zaxxer.hikari.util.PropertyElf.setTargetFromProperties(PropertyElf.java:46)
    at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:323)
    at com.zaxxer.hikari.pool.PoolBase.<init>(PoolBase.java:112)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:93)
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81)
    at HikariTest.main(HikariTest.java:21)

共有1个答案

管峻
2023-03-14

它给出该错误是因为<code>PGSimpleDataSource(即,它没有<code>setDatabase(String)方法)。它确实有一个属性databaseNameBaseDataSource中定义的setDatabaseName)。该属性在JDBC 4.3规范的第9.6.1节<code>数据源

阅读注释时,您似乎将JDBC URL格式的留档(和连接属性)与驱动程序提供的数据源实现上可用的属性混淆了。需要明确的是,该留档并未指定有属性Database,它仅使用Database作为JDBC URL语法中的占位符(如jdbc: postgresql://host/data中的占位符)。

 类似资料:
  • 我能够通过一个PHP脚本用这些完全相同的凭证连接到< code>protomolecule数据库。如图所示,试图在PhpStorm中设置它失败了。 如果我将数据库更改为默认的数据库,它在PhpStom中连接得很好。我不明白为什么用户只能连接到而不是其他任何东西。 我尝试设置新用户和新数据库无济于事。 编辑:根据要求添加了下面的工作PHP脚本设置。

  • 我的表单已提交,但未存储在表中。如果我对请求执行dd(),则数据在中,但当我执行save()时,它不会按预期工作。我想在backoffice表单上添加用户,仅包含姓名、电子邮件、用户类型和密码。 编辑:我将问题图像更改为代码,以便您更容易理解,很抱歉第一次尝试。编辑2:现在出现了更多的两件事,密码验证确认总是错误的,如果我跳过验证,则会出现以下错误: 对未定义方法App\User::forget(

  • 问题内容: 即时通讯试图将我的用户使用网络表单输入的长文本(约2500个字符)保存到我的数据库中,并使用php传递给服务器。 当我在phpmyadmin中查看时,文本会变大。如何配置表格以获得完整的文本?这是我的表配置: 看一看具有3000个字符限制的字段 内容 ,但是文本总是以 690个字符为准 。谢谢你的帮助! 编辑 :我发现了问题,但我不知道如何解决。查询总是以相同的char形式获取农作物,

  • 我正在创建一个Android应用程序,将数据保存在SQLite数据库中,然后从同一个数据库读取数据。这样一来,我就不需要每次将数据联机到MySQL服务器。我将其连接到一个外部数据库,提取数据,并尝试查看数据是否正在保存,但当我尝试使用函数从SQLite数据库获取数据时,它似乎是空的 对于获取数据的类,数据会保存下来,当我试图检查它时,它会告诉我它是空的 所以我为测试添加了这个函数,并将其命名为On

  • 本文向大家介绍MySQL ENUM数据类型的不同属性是什么?,包括了MySQL ENUM数据类型的不同属性是什么?的使用技巧和注意事项,需要的朋友参考一下 可以使用以下影响允许值的属性来定义MySQL ENUM类型- NOT NULL-  在ENUM类型中,默认情况下允许NULL值。要禁止NULL值,我们需要在描述ENUM列时使用NOT NULL属性。 NULL  -NULL属性是DEFAULT

  • 我使用gem在配置项中运行我的Rails6应用程序测试。在日志中,我看到正在创建具有的所有9个数据库,但它只是失败了,说这些数据库不存在。 我运行的命令是: 日志如下: