You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus中Google Cloud SQL的PostgreSQL JDBC URL配置问题

解决Google Cloud SQL PostgreSQL + Quarkus部署时"数据库不存在"的问题

核心结论

quarkus.datasource.jdbc.url中的XXX是你在Google Cloud SQL PostgreSQL实例中已创建的数据库名称,既不是实例的公网IP,也不是连接名。

原因说明

因为你配置了Cloud SQL的PostgreSQL Socket Factory,这种连接方式采用Unix套接字而非TCP连接,所以JDBC URL格式为jdbc:postgresql:///数据库名:

  • ///是固定写法,代表通过本地套接字连接,不需要填写主机地址
  • 实际的实例连接信息由quarkus.datasource.jdbc.additional-jdbc-properties.cloudSqlInstance参数(project-id:gcp-region:instance)提供,不需要在URL中重复填写

排查与修正步骤

  1. 确认目标数据库存在:登录GCP控制台,进入你的Cloud SQL PostgreSQL实例,切换到「数据库」标签页,检查是否有名为XXX的数据库。
  2. 创建缺失的数据库:如果数据库不存在,点击「创建数据库」,输入对应的名称(注意PostgreSQL默认区分大小写,名称要和配置完全一致)。
  3. 核对配置一致性:确保quarkus.datasource.jdbc.url中的数据库名称和Cloud SQL中创建的完全匹配,包括大小写、特殊字符。

正确配置示例

假设你的Cloud SQL实例信息如下:

  • 项目ID:my-gcp-project
  • 区域:us-central1
  • 实例名:quarkus-postgres-instance
  • 创建的数据库名:quarkus_app_db
  • 数据库用户:quarkus_user
  • 用户密码:quarkus_pass

对应的配置应为:

quarkus.datasource.db-kind=other 
quarkus.datasource.jdbc.url=jdbc:postgresql:///quarkus_app_db 
quarkus.datasource.jdbc.driver=org.postgresql.Driver
quarkus.datasource.username=quarkus_user
quarkus.datasource.password=quarkus_pass
quarkus.datasource.jdbc.additional-jdbc-properties.cloudSqlInstance=my-gcp-project:us-central1:quarkus-postgres-instance 
quarkus.datasource.jdbc.additional-jdbc-properties.socketFactory=com.google.cloud.sql.postgres.SocketFactory 

额外注意事项

  • 确保你使用的服务账号(对应yyy.json)拥有Cloud SQL Client角色权限,能够访问目标Cloud SQL实例。
  • 配置中的用户名和密码必须是Cloud SQL实例中已创建的数据库用户,而非GCP账号的用户名/密码。

内容的提问来源于stack exchange,提问作者Jan D.M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 21:22:46