无法连接到CloudSQL(使用GAE + Django)

时间:2016-06-10 23:26:11

标签: python mysql django sockets google-app-engine

问题

我无法通过生产服务器上的Google App Engine(灵活)中的Django连接到CloudSQL。我正在使用Python 3,如果这有所作为。

我在 settings.py

中使用此示例
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '/cloudsql/<your-project-id>:<your-cloud-sql-instance>',
        'NAME': '<your-database-name>',
        'USER': 'root',
    }
}

(当然,填写了ID。)

当我使用插座时,我根本无法连接:
无法通过套接字连接到本地MySQL服务器'/ cloudsql / projectid:cloudsqlid'(2)

当我尝试使用IPv4而不是套接字时,我能够连接到数据库,但后来我收到了这个错误:
在“读取初始通信数据包”时失去与MySQL服务器的连接

更奇怪的是,当我尝试在本地服务器上连接到CloudSQL时(当然使用IPv4),我能够很好地连接。只有部署的应用才能给我带来麻烦。

这是我的 app.yaml

runtime: python
threadsafe: true
vm: true
entrypoint: gunicorn -b :$PORT myapp.wsgi:app

runtime_config:
  python_version: 3

混乱

它说<your-cloud-sql-instance>,我假设它是指SQL实例的ID。但我也注意到SQL实例的“概述”,它说Instance connection name: projectid:us-central1:cloudsqlid。我尝试使用此连接名称代替<your-project-id>:<your-cloud-sql-instance>而没有运气。

以下是特定于CloudSQL和Django的Google App Engine文档的引用:
The Google Cloud SQL instance to which you're connecting, in the format '/cloudsql/your-project-id:your-instance-name' or '/cloudsql/domain:your-project-id:your-instance_name'.

这里说有两种连接通过套接字的方式(为什么?我不确定),但添加“domain:”似乎也无济于事。

我不能肯定地说我尝试了上述各种变化的组合,所以我可能错过了一些东西。

我更喜欢通过套接字连接,而不是IPv4。

0 个答案:

没有答案