我正在尝试使用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以根据谷歌的说明更改数据库定义,例如:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '/cloudsql/myapp-test01:myapp-db-test01',
'NAME': 'test01',
'USER': 'test01',
}}
根据谷歌的文档,我还将app.yaml添加到项目文件夹的根目录中:
application: test01
version: 1
runtime: python27
api_version: 1
threadsafe: true
libraries:
- name: django
version: "1.5"
builtins:
- django_wsgi: on这就是我遇到障碍的地方。
首先:对于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,或进行更新?我假设这是通过启动程序完成的,但是使用appengine.google.com仪表板创建(添加)应用程序与在本地启动程序中添加新应用程序之间有什么关系?对此非常困惑--这两个应用程序是同一个应用程序,需要具有相同的名称,还是...?)
发布于 2017-08-04 08:25:25
看起来当时你也遗漏了密码字段...
'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实例添加新的超级管理员级别的用户,以防您不确定也要使用哪个用户。
https://stackoverflow.com/questions/20843817
复制相似问题