我正在尝试使用Prisma从云函数连接到公共IP CloudSQL Postgres数据库。数据库已强制使用SSL。我假设我可以使用Cloud Auth Proxy,它在本地工作,但当我部署它时,它会给我一个错误。
我都试过了:
选项1:
datasource db {
provider = "postgresql"
url = "postgresql://USER:PASSWORD@localhost:3307/DATABASE_NAME?host=CONNECTION_URL"
}
收到错误:
Can't reach database server at `CONNECTION_URL`:`3307`
选项2:
datasource db {
provider = "postgresql"
url = "postgresql://USER:PASSWORD@localhost/DATABASE_NAME?host=CONNECTION_URL"
}
收到错误:
Can't reach database server at `IP_ADDRESS`:`5432`
其中IP_ADDRESS是我可以在控制台中看到的数据库的正确公共IP地址
CONNECTION_URL是/cloudsql/PROJ:REGION:INSTANCE
您的应用程序正在尝试连接"CONNECTION_URL";以及";3307";。要在云功能上使用公共IP,您应该通过unix套接字进行连接:https://cloud.google.com/sql/docs/mysql/connect-functions#connect_to
基于这个问题,看起来你的URL应该是这样的:
postgresql://username@localhost/databasename?host=/cloudsql/CONNECTION_NAME
其中,实例连接名称为PROJ:REGION:INSTANCE
。
发现我为所有流量启用了vpc连接器,所以所有流量都试图通过私有vpc而不是公共IP。禁用它修复了它。