【发布时间】:2019-06-12 21:11:35
【问题描述】:
我正在学习在 Google App Engine here 上部署 Django 应用程序的教程。我可以使用 cloud_sql_proxy 在本地运行应用程序,但是当我将应用程序部署到 GAE 时,应用程序失败并出现错误:
(2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)")
检查错误输出,看起来 django 正在尝试按预期连接到/cloudsql/<project>:<region>:<instance> 的 unix 套接字,只是由于某种原因失败了。什么可能导致此问题?
【问题讨论】:
-
我尚未完成本教程,但我熟悉 App Engine 和 Cloud SQL。您包含的错误 (
"Can't connect to MySQL server on 'localhost') 与您的声明相冲突,它看起来像是在使用/cloudsql/<project>:<region>:<instance>套接字。该错误表明它不是。查看教程,它确定它是本地的还是使用os.getenv('GAE_APPLICATION', None)部署的。你改变了这个吗?如果没有,也许要么尝试记录环境变量的值以确认它采用的路径,要么强制它始终使用/cloudsql/...路径。 -
是的,我认为这似乎也很矛盾,但是 django 输出了一个连接变量列表,我在那里看到了
/cloudsql/<project>:<region>:<instance>。执行该分支是定义它的唯一方法。只是为了确保我将语句设置为if True并且我得到了同样的错误。 -
似乎不满足以下条件,因此它正在尝试建立本地 TCP 连接:
if os.getenv('GAE_APPLICATION', None):。尝试查看entire code 以确保您没有遗漏任何内容 -
如果你明天早上还没解决这个问题,我会试试教程。
-
它对我有用。我鼓励您仔细检查您是否已按照说明进行操作。
标签: mysql django python-3.x google-app-engine google-cloud-sql