将 Django 连接到 Google App Engine 中的 Google CloudSQL Postgres 数据库时出错
Error connecting Django to Google CloudSQL Postgres database in Google App Engine
我正在使用 Google Cloud 和 Google App Engine 评估我们公司的新产品。我正在尝试调整本教程以使用 Postgres 而不是 MySQL:
https://cloud.google.com/python/django/flexible-environment
虽然我能够在本地成功连接到数据库,但在生产环境中尝试时,我收到以下 500 错误:
OperationalError at /admin/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_name_hidden>:us-central1:<database_id_hidden>/.s.PGSQL.5432"?
为了连接到 Postgres,我对示例项目进行了三处更改。我在 app.yaml:
中有这个片段
beta_settings:
cloud_sql_instances: <project_name_hidden>:us-central1:<database_id_hidden>
我在 settings.py 中有这个片段:
# [START dbconfig]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'polls',
'USER': '<db_user_name_hidden>',
'PASSWORD': '<db_password_hidden>',
'PORT': '5432',
}
}
# In the flexible environment, you connect to CloudSQL using a unix socket.
# Locally, you can use the CloudSQL proxy to proxy a localhost connection
# to the instance
DATABASES['default']['HOST'] = '/cloudsql/<project_name_hidden>:us-central1:<database_id_hidden>'
if os.getenv('GAE_INSTANCE'):
pass
else:
DATABASES['default']['HOST'] = '127.0.0.1'
# [END dbconfig]
并有这个 requirements.py:
Django==1.10.6
#mysqlclient==1.3.10
psycopg2==2.7.1
wheel==0.29.0
gunicorn==19.7.0
没关系,似乎 Google 在他们这边修复了一些东西,服务现在可以正常工作了。我想弄清楚到底发生了什么变化...
我为此苦苦挣扎了几个小时,解决它的唯一方法是创建一个新的 Postgres 实例。不幸的是蛮力,但似乎有时 GCP 上的实例可以在损坏状态下启动并且永远不会工作。
我正在使用 Google Cloud 和 Google App Engine 评估我们公司的新产品。我正在尝试调整本教程以使用 Postgres 而不是 MySQL:
https://cloud.google.com/python/django/flexible-environment
虽然我能够在本地成功连接到数据库,但在生产环境中尝试时,我收到以下 500 错误:
OperationalError at /admin/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_name_hidden>:us-central1:<database_id_hidden>/.s.PGSQL.5432"?
为了连接到 Postgres,我对示例项目进行了三处更改。我在 app.yaml:
中有这个片段beta_settings:
cloud_sql_instances: <project_name_hidden>:us-central1:<database_id_hidden>
我在 settings.py 中有这个片段:
# [START dbconfig]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'polls',
'USER': '<db_user_name_hidden>',
'PASSWORD': '<db_password_hidden>',
'PORT': '5432',
}
}
# In the flexible environment, you connect to CloudSQL using a unix socket.
# Locally, you can use the CloudSQL proxy to proxy a localhost connection
# to the instance
DATABASES['default']['HOST'] = '/cloudsql/<project_name_hidden>:us-central1:<database_id_hidden>'
if os.getenv('GAE_INSTANCE'):
pass
else:
DATABASES['default']['HOST'] = '127.0.0.1'
# [END dbconfig]
并有这个 requirements.py:
Django==1.10.6
#mysqlclient==1.3.10
psycopg2==2.7.1
wheel==0.29.0
gunicorn==19.7.0
没关系,似乎 Google 在他们这边修复了一些东西,服务现在可以正常工作了。我想弄清楚到底发生了什么变化...
我为此苦苦挣扎了几个小时,解决它的唯一方法是创建一个新的 Postgres 实例。不幸的是蛮力,但似乎有时 GCP 上的实例可以在损坏状态下启动并且永远不会工作。