我已经设置了一个默认的django / django-wiki项目。本地测试工作正常。google.appengine.ext.django.backends.rdbms
我认为由于某些身份验证问题,无法从本地服务器(使用)连接到Cloud sql 。更重要的是,我无法从生产服务器连接。
我确保不将本地MySQLdb
坐席部署在我的虚拟环境目录中。
我在以下方面app.yaml
:
- name: MySQLdb
version: "latest"
我的DATABASE
输入如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname',
'USER': 'root',
'PASSWORD': '',
'HOST': '/cloudsql/appname:sqlinstance',
'PORT': '',
}
}
它似乎正在工作,或者至少没有抱怨缺少软件包或mysql导入问题。我的问题是以下的(从生产日志中获得,但也可以通过django调试输出看到):
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/MySQLdb-1.2.4b4/MySQLdb/connections.py", line 190, in __init__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 38")
是什么原因造成的?这是否表示已与某事物建立了联系但没有回复?其他帖子似乎在从外部来源进行连接时提到了此问题,但此连接来自应用程序引擎AFAIK。
好吧,这比预期的要直接得多。我假设使用我的google帐户创建的cloud sql默认只会授予对我的GAE应用的访问权限。必须从Developer Console
-> Storage
-> Cloud SQL
-> instance-name
-> Edit
-> ->显式设置AUTHORIZED APP ENGINE APPLICATIONS
。或在创建SQL实例时,打开高级选项。
我只是在框中添加了我的应用程序的名称,点击保存,一切正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句