Google Cloud SQL 上的 PostgREST:unix 套接字 URI 格式?

J D*_*ont 6 unix-socket google-cloud-sql postgrest

有谁有使用 PostgREST 和 Cloud SQL 的经验吗?

我的 SQL 实例已准备好开放访问 (0.0.0.0/0),我可以使用云代理应用程序通过本地 PostGREST 访问它。

现在我想从同一个项目的实例运行 Postgrest,但我找不到支持 Cloud SQL 格式的 Postgrest URI 格式,因为 Google SQL Cloud 只使用像 /cloudsql/INSTANCE_CONNECTION_NAME

配置 1

db-uri = "postgres://postgres:password@/unix(/cloudsql/INSTANCE_CONNECTION_NAME)/mydatabase"
db-schema = "api"
jwt-secret = "OOcJ7VoSY1mXqod4MKtb9WCCwt9erJkRQ2tzYmLb4Xe="
db-anon-role = "web_anon"
server-port=3000
Run Code Online (Sandbox Code Playgroud)

退货 {"details":"could not translate host name \"unix(\" to address: Unknown host\n","code":"","message":"Database connection error"}

配置 2

db-uri = "postgres://postgres:password@/mydatabase?unix_socket=/cloudsql/INSTANCE_CONNECTION_NAME"
db-schema = "api"
jwt-secret = "OOcJ7VoSY1mXqod4MKtb9WCCwt9erJkRQ2tzYmLb4Xe="
db-anon-role = "web_anon"
server-port=3000
Run Code Online (Sandbox Code Playgroud)

解析器拒绝问号 {"details":"invalid URI query parameter: \"unix_socket\"\n","code":"","message":"Database connection error"}

配置 3

db-uri = "postgres://postgres:password@/mydatabase"
db-schema = "api"
jwt-secret = "OOcJ7VoSY1mXqod4MKtb9WCCwt9erJkRQ2tzYmLb4Xe="
db-anon-role = "web_anon"
server-port=3000
server-unix-socket= "/cloudsql/INSTANCE_CONNECTION_NAME"
Run Code Online (Sandbox Code Playgroud)

server-unix-socket似乎只采用套接字锁定文件路径。Feeding 它/cloudsql/INSTANCE_CONNECTION_NAME试图删除文件,如 `postgrest.exe: /cloudsql/INSTANCE_CONNECTION_NAME: DeleteFile "/cloudsql/INSTANCE_CONNECTION_NAME": invalid argument t(文件名、目录名或卷标语法不正确。)

文档

云 SQL 文档

PostgREST

环境

  • PostgreSQL 版本:11
  • PostgREST 版本:6.0.2
  • 操作系统:Win10和Alpine

Jos*_*ron 2

根据使用CloudSQL 连接,示例是:

# postgres+pg8000://<db_user>:<db_pass>@/<db_name>?unix_sock=/cloudsql//.s.PGSQL.5432

然后你可以尝试(正如@marian.vladoi提到的):

db-uri = "postgres://postgres:password@/mydatabase?unix_socket=/cloudsql/INSTANCE_CONNECTION_NAME/.s.PGSQL.5432"
Run Code Online (Sandbox Code Playgroud)

请记住,连接名称应包括:

ProjectID:Region:DatabaseName
Run Code Online (Sandbox Code Playgroud)

例如:myproject:myregion:myinstance

不管怎样,您可以在这里找到更多从外部应用程序和Google Cloud 内部进行连接的选项。