带有django on' new'的cloudql数据库灵活的谷歌应用引擎

时间:2016-08-19 08:17:14

标签: python django google-app-engine google-cloud-platform google-cloud-sql

我正在使用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参数的应用程序时出现错误。这只发生在部署时,本地一切都很完美。

1 个答案:

答案 0 :(得分:1)

我已经为github上的文档制作了PR,但是为了让我将DEBUG标记从True更改为False所需的主要更改如下所述。

请注意,一旦您更改了DEBUG标记,GAE就要求您的Cloud SQL数据库使用/cloudsql/套接字连接。

此外,我错过了有关ALLOWED_HOSTS的非常关键的信息,其中应包括.appspot.com

生产

准备好在制作中提供内容后,有几个 配置所需的更改。最值得注意的变化是:

  • 将“.appspot.com”添加到您的ALLOWED_HOSTS
  • 将settings.py文件中的DEBUG变量更改为False
  • 如果您使用的是Cloud SQL数据库 实例,为了从DEBUG = True更改 到DEBUG = False您需要正确配置数据库。看到 说明 here并且是 一定要更改您的app.yaml文件以及您的HOST密钥 DATABASES对象。