Google AppEngine 上的 Django 与 CloudSQL:如何连接数据库(错误 2002,无法连接到本地 MySQL 服务器..)

2024-03-16

我正在尝试使用 CloudSQL 启动一个托管在 GAE 上的 Django 应用程序。在本地,我使用 Mac OSX Maverics,在 virtualenv 中工作(通过 virtualenvwrapper)。

安装适用于 Python 的 GAE SDK 后,我启动了虚拟环境,从 /usr/local/google_appengine/lib/django-1.5/ 安装了 Django 1.5

另外,在 appengine.google.com 上,我创建了一个新应用程序,并将 CloudSQL 实例连接到它(启用计费)。

我可以创建一个新的 Django 项目,例如django-admin.py startproject test01,然后我编辑其 settings.py 以根据 Google 的说明更改数据库定义,例如:

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.mysql',
      'HOST': '/cloudsql/myapp-test01:myapp-db-test01',
      'NAME': 'test01',
      'USER': 'test01',
}

}

我还根据 Google 文档将 app.yaml 添加到了项目文件夹的根目录中:

application: test01
version: 1
runtime: python27
api_version: 1
threadsafe: true

libraries:
- name: django
  version: "1.5"

builtins:
- django_wsgi: on

这就是我遇到障碍的地方。

第一:数据库中的“名称”和“用户”字段到底应该输入什么?该文档没有详细说明。

其次,当我跑步时:python manage.py syncdb要初始化应用程序,我得到:

OperationalError: (2002, "Can't connect to local MySQL server through socket '/cloudsql/desgn-test-01:db-test-01' (2)") 

我确实安装了 MySQL,通过brew install mysql(虽然我没有在虚拟环境中这样做),而且我也有MySQL-python。

我是 GAE 新手,对设置数据库相当缺乏经验,所以我不确定接下来要尝试什么。我不确定问题是否出在我的本地 MySQL 或 CloudSQL 连接设置上?

(关于 GAE 的更一般的 Django 问题:工作流程到底是什么?如果我的连接正常工作,是否意味着即使在本地开发 Django 应用程序时我也在使用 CloudSQL?随后如何将应用程序“推送”到AppEngine,或进行更新?我假设这是通过启动器完成的,但是使用 appengine.google.com 仪表板创建(添加)应用程序与在本地启动器中添加新应用程序之间有什么相关性?很困惑这——这两个应用程序是同一个应用程序吗,需要具有相同的名称,还是..?)


看起来当时您也缺少密码字段......

    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test01',
        'USER': 'test01',
        'PASSWORD': '[password]',
        'HOST': '/cloudsql/myapp-test01:myapp-db-test01',
        'PORT': '3306',
    }

使用 Cloud SQL 的 GUI,您可以随时向 Cloud SQL 实例添加新的超级管理员级别用户,以防您不确定要使用哪个用户。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google AppEngine 上的 Django 与 CloudSQL:如何连接数据库(错误 2002,无法连接到本地 MySQL 服务器..) 的相关文章

随机推荐