1

HikariCP と impossibl/pgjdbc-ng ドライバーを使用して、Spring Boot アプリケーションを実装しました。データベース接続 URL が postgres データベースを参照している限り、アプリケーションは正常に動作しています。ただし、データベース URL に pgbouncer のアドレスが含まれている場合、アプリケーションは次のエラー メッセージで起動に失敗します。

2021-11-24 09:26:36,575 ERROR [main]                            com.zaxxer.hikari.pool.HikariPool: 594 - Exception during pool initialization. {}
com.impossibl.postgres.jdbc.PGSQLSimpleException: Connection Error: prepared statement "TB" already exists
    at com.impossibl.postgres.jdbc.ErrorUtils.makeSQLException(ErrorUtils.java:197)
    at com.impossibl.postgres.jdbc.ErrorUtils.makeSQLException(ErrorUtils.java:134)
    at com.impossibl.postgres.jdbc.ConnectionUtil.createConnection(ConnectionUtil.java:326)
    at com.impossibl.postgres.jdbc.ConnectionUtil.createConnection(ConnectionUtil.java:279)
    at com.impossibl.postgres.jdbc.PGDriver.connect(PGDriver.java:104)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)

...

問題を解決するために、HikariCP を別のデータソース実装に置き換えるという推奨事項を見つけましたが、アプリケーションを変更したくないため、これはオプションではありません。だから私の質問は:

  1. エラーメッセージの原因は何ですか?
  2. JDBC URL にパラメータを追加することで問題を解決できますか?

前もって感謝します!

4

0 に答える 0