我正在使用cloudsql和一个新的'来构建一个django(1.9)应用程序。灵活的环境。我有同样的错误: Django on Google AppEngine with CloudSQL: How to connect database (Error 2002, Can't connect to local MySQL server..)
但是,在该线程中,它们引用较旧的文档并解释为将数据库键HOST
放入格式:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '/cloudsql/myapp-test01:myapp-db-test01',
'NAME': 'test01',
'USER': 'test01',
}
在documentation for running django on the 'flexible' environment中,解释了向世界(0.0.0.0/0)打开数据库并使用以下格式:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '<your-database-name>',
'USER': '<your-database-user>',
'PASSWORD': '<your-database-password>',
'HOST': '<your-database-host>',
'PORT': '3306',
}
}
可能是CloudSQL提供的IP地址。
请参阅此处的文档:https://cloud.google.com/python/django/flexible-environment
请注意“灵活环境”&#39;这看起来明显不同(但我不知道为什么)。
我正在写作,因为当我从IP地址格式更改为/cloudsq/...
格式时,我收到错误
OperationalError:(2002,&#34;无法通过套接字连接到本地MySQL服务器&#39; / cloudsql / desgn-test-01:db-test-01&#39;(2)&# 34;)
任何建议高度赞赏。谷歌似乎不可能真的希望我们将数据库打开到0.0.0.0
,在文档中他们甚至说它仅用于测试但不提供进一步的信息。
我还应该提一下,我在我的django配置中使用了两个数据库,并且默认情况下是&#39;一个是sqlite db(这部分网站工作正常)。当我尝试连接到使用cloud sql参数的应用程序时出现错误。这只发生在部署时,本地一切都很完美。
答案 0 :(得分:1)
我已经为github上的文档制作了PR,但是为了让我将DEBUG
标记从True
更改为False
所需的主要更改如下所述。
请注意,一旦您更改了DEBUG
标记,GAE就要求您的Cloud SQL数据库使用/cloudsql/
套接字连接。
此外,我错过了有关ALLOWED_HOSTS
的非常关键的信息,其中应包括.appspot.com
准备好在制作中提供内容后,有几个 配置所需的更改。最值得注意的变化是:
ALLOWED_HOSTS
DEBUG
变量更改为False
。DEBUG = True
更改
到DEBUG = False
您需要正确配置数据库。看到
说明
here并且是
一定要更改您的app.yaml
文件以及您的HOST
密钥
DATABASES
对象。