寻求支持connectionInitSql且兼容Hikari的PostgreSQL JDBC驱动
解答:无需额外驱动,用Hikari自带配置即可实现需求
首先明确:目前主流的PostgreSQL JDBC驱动(包括官方驱动)都没有connectionInitSql这个属性,你不需要去寻找第三方驱动——因为Hikari连接池本身就提供了初始化连接的配置项,完全可以替代这个需求。
你遇到报错的原因很直接:org.postgresql.ds.PGSimpleDataSource类确实没有connectionInitSql这个属性,Hikari的PropertyElf工具类尝试给不存在的属性赋值,自然抛出异常。
正确的配置方式
直接使用HikariConfig自带的setConnectionInitSql方法来设置连接初始化SQL,而不是通过addDataSourceProperty传递给PostgreSQL数据源:
HikariConfig config = new HikariConfig(); config.setDataSourceClassName("org.postgresql.ds.PGSimpleDataSource"); // 直接用Hikari的配置方法设置初始化SQL config.setConnectionInitSql("SET ROLE admin"); HikariDataSource hikariDataSource = new HikariDataSource(config);
额外说明
如果出于某些特殊原因,你一定要在数据源层面处理连接初始化,可以自定义一个PGSimpleDataSource的子类,添加connectionInitSql属性,并在getConnection方法中执行对应的SQL,但这种做法完全没必要——Hikari的原生配置已经完美解决这个问题,而且更符合连接池的设计逻辑。
内容的提问来源于stack exchange,提问作者Daniel Scott
相关产品推荐
相关产品推荐

