Кто-нибудь из вас имеет опыт работы с PostgREST и Cloud SQL?
У меня есть готовый экземпляр SQL с открытым доступом (0.0.0.0/0), и я могу получить к нему доступ с помощью локального PostGREST с помощью прокси-приложения Cloud.
Теперь я хочу запустить Postgrest из экземпляра того же проекта, но я не могу найти формат URI для Postgrest, который поддерживает формат Cloud SQL, поскольку Google SQL Cloud использует только сокеты unix, такие как /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
Возвращает {"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
Парсер отклоняет вопросительный знак {"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"
server-unix-socket
, похоже, принимает только путь к файлу блокировки сокета. Загрузка /cloudsql/INSTANCE_CONNECTION_NAME
пытается удалить файл, как в `postgrest.exe: / cloudsql / INSTANCE_CONNECTION_NAME: DeleteFile" / cloudsql / INSTANCE_CONNECTION_NAME ": недопустимый аргумент t (неверное имя файла, имя каталога или синтаксис метки тома.)
Документация
Документ Cloud SQL
PostgREST
- http://postgrest.org/en/v6.0/configuration.html
- https://github.com/PostgREST/postgrest/issues/1186
- https://github.com/PostgREST/postgrest/issues/169
Окружающая среда
- Версия PostgreSQL: 11
- Версия PostgREST: 6.0.2
- Операционная система: Win10 и Alpine
postgres//<db_user>:<db_pass>@/<db_name>?unix_sock=/cloudsql/<cloud_sql_instance_name>/.s.PGSQL.5432
или, может быть,host
вместоunix_sock
- person marian.vladoi   schedule 05.03.2020db-uri = postgres:///user@/dbname
(без пароля). Кроме того, server-unix-socket является только настройка веб-сервера, а не настройка подключения к Интернету. Я предлагаю сначала попробовать строку подключения сpsql <db-uri>
. Если db-uri правильный, он также будет работать с PostgREST. - person Steve Chavez   schedule 06.03.2020/var/postgresql/.s.PGSQL.5432
, но я не могу найти способ настроить местоположение сокета, поскольку местоположение жестко задано Cloudrun. - person eamon1234   schedule 28.07.2020