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

时间:2013-12-30 16:48:42

标签: python mysql django google-app-engine google-cloud-sql

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

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

安装了Django 1.5

此外,在appengine.google.com上我创建了一个新应用,并将CloudSQL实例连接到它(启用结算)。

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

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

这是我遇到障碍的地方。

首先:究竟应该在NATABASES中为NAME和USER字段输入什么?文档没有详细说明。

其次,当我运行:python manage.py syncdb初始化应用时,我得到:

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

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

我是GAE的新手,并且在设置数据库方面相当缺乏经验,所以我不确定接下来会尝试什么。我不确定问题是我的本地MySQL还是CloudSQL连接设置?

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

1 个答案:

答案 0 :(得分:0)

当时看起来,你也错过了密码字段......

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

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