首页 > 解决方案 > YML 文件中的 HikariCP DataSourceProperties

问题描述

我正在使用 Micronaut 并尝试实现 Hikari 以连接到 PostgresSQL 数据库。我已经使用 yml 配置在本地连接上工作

datasources:
  default:
    jdbcUrl: "jdbc:postgresql://127.0.0.1:3306/playland"
    username: "user"
    password: "password"

而且效果很好。问题是,当我将它部署到 App Engine 时,我需要使用以下内容。如果可能的话,我更愿意(我认为)将它添加到 yml 配置中,但我似乎无法弄清楚。

// For Java users, the Cloud SQL JDBC Socket Factory can provide authenticated connections.
// See https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory for details.
config.addDataSourceProperty("socketFactory", "com.google.cloud.sql.postgres.SocketFactory");
config.addDataSourceProperty("cloudSqlInstance", CLOUD_SQL_CONNECTION_NAME);

我已经按照教程中的说明使用配置使其工作,但我遇到了将数据源属性合并到 yml 配置中的问题。我根据另一个 SO 答案尝试了这个:

datasources:
  default:
    jdbcUrl: "jdbc:postgresql:///playland"
    username: "user"
    password: "password"
    hikari:
      data-source-properties:
        socketFactory: "com.google.cloud.sql.postgres.SocketFactory"
        cloudSqlInstance: "project:region:instance"

但它没有用。有没有办法添加它或没有?

标签: javapostgresqlgoogle-app-enginehikaricp

解决方案


尝试使用完整的 JDBC URL

jdbc:postgresql:///<DATABASE_NAME>?cloudSqlInstance=<INSTANCE_CONNECTION_NAME>&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=<POSTGRESQL_USER_NAME>&password=<POSTGRESQL_USER_PASSWORD>

请让我知道这对你有没有用。

用于 JDBC 驱动程序的 Cloud SQL 套接字工厂


推荐阅读