我在Google Cloud on Cloud Run上有一个Django项目。应该连接到Cloud SQL PostgreSQL数据库并工作,但它没有。以下是settings.py
的数据库部分(我已经删除了私有数据(:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'db',
'USER': 'user',
'PASSWORD': 'password',
'HOST': '/cloudsql/project:europe-west4:instance',
'PORT': '5432',
}
}
然而,当我尝试做任何与数据库相关的事情(例如,登录(时,它会抛出错误
OperationalError at /accounts/login/
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/cloudsql/*project*:europe-west4:*instance*/.s.PGSQL.5432"?
如果我从HOST中删除/cloudsql/
,它会给出错误
OperationalError at /accounts/login/
could not translate host name "*project*:europe-west4:*instance*" to address: Name or service not known
当我在本地计算机上使用Cloud SQL代理exe进行测试时,它可以正常工作。然而,当我将它部署到Cloud Run时,它并没有。
您是否启用了从Cloud Run连接到该Cloud SQL实例?
尝试运行
gcloud run services update [your cloud run service name]
--add-cloudsql-instances [project:region:instance]
还要检查您的云运行服务帐户是否具有Cloud SQL Client
权限。有关如何做到这一点的更多信息,请参阅本文档。
尝试在host
参数中使用完整url