我正在部署一个 Google App Engine,并连接到由 Prisma ORM 管理的 PostgreSQL CloudSQL 实例。所有这一切都是我通过 Bitbucket CI/CD 完成的。但是我在设置此连接时遇到困难。
这是我遇到的错误...(我遗漏了安全敏感变量)。该错误发生在 Atlassian 提供的 Google App Engine 部署映像的构建步骤中:https://bitbucket.org/atlassian/google-app-engine-deploy/src/master/
> prisma migrate deploy
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database "mydatabasename", schema "public" at "localhost:5432"
Error: P1001: Can't reach database server at `/cloudsql/my-project-id:europe-west1:my-instance-name`:`5432`
Please make sure your database server is running at /cloudsql/my-project-id:europe-west1:my-instance-name`:`5432``.
我按照 Google 的以下文档:https://cloud.google.com/sql/docs/postgres/connect-app-engine-standard 通过 Unix 套接字进行连接,但没有运气。还配置了所有必要的 IAM 角色。
环境:
DATABASE_URL="postgres://username:password@localhost/dbname?host=/cloudsql/my-project-id:region:my-instance-name"
这个
DATABASE_URL
被注入到 schema.prisma 中,如下所示:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
任何人都有部署此特定技术堆栈的经验,并且知道如何设置此连接?
Prisma 支持通过 Unix 套接字进行连接。
请参阅 https://www.prisma.io/docs/orm/overview/databases/postgresql#connecting-via-sockets。
看起来您需要添加尾部斜杠,例如,
postgresql://USER:PASSWORD@localhost/database?host=/cloudsql/my-project-id:region:my-instance-name/