我正在尝试使用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,需要有相同的名字,还是......?)
答案 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实例添加新的超级管理员级别用户,以防您不确定要使用的用户。