在 'new' 灵活的 google 应用引擎上使用 django 的 cloudsql 数据库
cloudsql databases with django on 'new' flexible google app engine
我正在使用云sql 和'new' 灵活环境构建一个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
注意 'Flexible Environment' 似乎明显不同(但我不知道为什么)。
我正在写,因为当我从 IP 地址格式更改为 /cloudsq/...
格式时,我收到错误
OperationalError: (2002, "Can't connect to local MySQL server through socket '/cloudsql/desgn-test-01:db-test-01' (2)")
非常感谢任何建议。 google 真的希望我们让数据库对 0.0.0.0
开放似乎是不可能的,在文档中他们甚至说这只是为了测试,但没有提供进一步的信息。
我还应该提一下,我在我的 django 配置中使用了两个数据库,'default' 一个是 sqlite 数据库(网站的这一部分工作正常)。当我尝试连接到使用云 sql 参数的应用程序时出现错误。这仅在部署时发生,在本地一切正常。
我已经为 github 上的文档制作了一个 PR,但是为了将我的 DEBUG
标志从 True
更改为 False
如下所述。
请注意,一旦您更改了 DEBUG
标志,GAE 就要求您的云 SQL 数据库使用 /cloudsql/
套接字连接。
此外,我错过了关于 ALLOWED_HOSTS
的非常关键的信息,其中应该包括 .appspot.com
生产
一旦您准备好在生产中提供您的内容,有几个
配置所需的更改。最显着的变化是:
- 将“.appspot.com”添加到您的
ALLOWED_HOSTS
- 在 settings.py 文件中将
DEBUG
变量更改为 False
。
- 如果您使用的是云 SQL 数据库
例如,为了从
DEBUG = True
DEBUG = False
您需要正确配置数据库。看
指示
here 成为
确保更改您的 app.yaml
文件以及您的 HOST
键
DATABASES
对象。
我正在使用云sql 和'new' 灵活环境构建一个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
注意 'Flexible Environment' 似乎明显不同(但我不知道为什么)。
我正在写,因为当我从 IP 地址格式更改为 /cloudsq/...
格式时,我收到错误
OperationalError: (2002, "Can't connect to local MySQL server through socket '/cloudsql/desgn-test-01:db-test-01' (2)")
非常感谢任何建议。 google 真的希望我们让数据库对 0.0.0.0
开放似乎是不可能的,在文档中他们甚至说这只是为了测试,但没有提供进一步的信息。
我还应该提一下,我在我的 django 配置中使用了两个数据库,'default' 一个是 sqlite 数据库(网站的这一部分工作正常)。当我尝试连接到使用云 sql 参数的应用程序时出现错误。这仅在部署时发生,在本地一切正常。
我已经为 github 上的文档制作了一个 PR,但是为了将我的 DEBUG
标志从 True
更改为 False
如下所述。
请注意,一旦您更改了 DEBUG
标志,GAE 就要求您的云 SQL 数据库使用 /cloudsql/
套接字连接。
此外,我错过了关于 ALLOWED_HOSTS
的非常关键的信息,其中应该包括 .appspot.com
生产
一旦您准备好在生产中提供您的内容,有几个 配置所需的更改。最显着的变化是:
- 将“.appspot.com”添加到您的
ALLOWED_HOSTS
- 在 settings.py 文件中将
DEBUG
变量更改为False
。 - 如果您使用的是云 SQL 数据库
例如,为了从
DEBUG = True
DEBUG = False
您需要正确配置数据库。看 指示 here 成为 确保更改您的app.yaml
文件以及您的HOST
键DATABASES
对象。