我正在尝试连接到云运行中的django项目的云sql,该项目正在生产中通过云运行进行部署。然而Django给了我一个错误,说
Error: 'asia-south1' is not a valid port number.
settings.py中我的数据库设置如下
if os.getenv('ENV') == 'PROD':
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'HOST': '/cloudsql/<PROJECT-NAME>:asia-south1:<INSTANCE-ID>',
'PORT': '5432',
'USER': <USER>,
'PASSWORD': <PASSWORD>,
'NAME': <DB_NAME>,
}
}
我看到了一个可能的解决方案,将云代理连接重定向到127.0.0.1:3306,但为此,我必须在docker容器上安装云代理并进行身份验证,对吗?这不是云运行为我们提供的没有任何麻烦的东西吗?是否存在连接到云sql实例而不在容器上安装云代理并重定向的情况?
在这里的文档中,Cloud Run的Cloud SQL连接打开了一个Unix套接字
正确配置后,您可以使用以下格式将服务连接到Cloud SQL实例的unix域套接字:/cloudsql/instance_CONNECTION_NAME。
因此,Django配置设置为通过TCP打开连接,从而查找IP/DNS和端口。
要将Django连接到Unix套接字,您可以遵循以下示例/教程