我有一个停靠的django应用程序,我已经构建了它,上传到GCR,然后部署为google cloud run服务。然而,在启动时,我得到了以下错误(来自云运行日志):
psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running locally and accepting
connections on Unix domain socket "/cloudsql/kingdoms-289503:us-west1:kingdomsdb/.s.PGSQL.5432"?我对django的数据库设置如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'HOST': "/cloudsql/kingdoms-289503:us-west1:kingdomsdb",
'USER': "postgres",
'PASSWORD': "password",
'NAME': "postgres",
}
}并且我已经确保创建到数据库的连接

据我所知,cloud run应该神奇地挂载一个at /cloudsql,django可以用它来连接postgres,但这个错误意味着它没有被挂载。
是否有额外的配置我需要检查以确保套接字在那里?除了连接到cloudsql之外,是否还有其他不涉及此套接字的方法?
发布于 2021-09-25 05:00:40
正如@glasnt上面提到的,这也可能是ACL问题。服务帐户需要Cloud SQL Client角色。在默认情况下,Default compute service account是以compute@developer.gserviceaccount.com结尾的主体。
我的问题是,我没有获得添加角色的选项,这是我的新手直觉引导我的,云运行服务资源。相反,请转到IAM主设置、IAM选项卡,并手动将权限添加到服务帐户。如果您在列表中看不到服务帐户,因此无法编辑其角色,您可以转到Add + (顶部工具栏)并手动输入电子邮件地址。
https://stackoverflow.com/questions/64043892
复制相似问题