Google Cloud Run: Не удается подключиться к Postgress SQL
Я следую этому руководству для загрузки моего существующего проекта Django, работающего локально на sqlite, в Google Cloud Run / Postgres.
У меня запущена служба cloud_sql_proxy и я могу войти в Postgres из командной строки.
Я нахожусь на этапе выполнения команды
python manage.py migrate
И я получаю ошибку:
django.db.utils.OperationalError: connection to server on socket "/cloudsql/cgps-registration-2:us-central-1:cgps-reg-2-postgre-sql/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?
Ответ на этот вопрос - Да, сервер работает локально и принимает соединения, потому что я могу войти в систему с помощью клиента Postgres:
agerson@agersons-iMac ~ % psql "sslmode=disable dbname=postgres user=postgres hostaddr=127.0.0.1"
Password for user postgres:
psql (14.1, server 13.4)
Type "help" for help.
postgres=>
Я дважды проверил строку подключения в моем файле .env, и она имеет правильное значение UN / P
Не создается ли этот scoket каким-то образом на предыдущем шаге?
/cloudsql/cgps-registration-2:us-central-1:cgps-reg-2-postgre-sql/.s.PGSQL.5432
Похоже, что существует несоответствие между тем, что ищет приложение, и тем, как вы запускаете прокси. Ошибка объясняет проблему.
Вы запускаете прокси следующим образом с неправильным именем региона (us-central):
cloud_sql_proxy -instances="cgps-registration-2:us-central:cgps-reg-2-postgre-sql=tcp:5432
Но приложение ищет us-central1. Попробуйте следующее (опуская =tcp:5432
для создания сокета Unix):
cloud_sql_proxy -instances="cgps-registration-2:us-central1:cgps-reg-2-postgre-sql
Кроме того, если вы используете pg14 (похоже, что вы используете pg13), в настоящее время в API есть ошибка, которая препятствует соединению с сокетом Unix. Подробнее см. в отслеживании проблемы. Другие версии postgres не затронуты.