GAE Django cloudsql socket

时间:2014-04-01 14:23:46

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

我试图在Google应用引擎上设置django项目,但我似乎无法从我的计算机连接到数据库以执行syncdb等操作。

这是我的配置(已更改)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '/cloudsql/something:else',
        'NAME': 'db_name',
        'USER': 'db_user',
    }
}

现在与数据库的连接适用于部署的应用程序,但是当我从我的终端运行它时,我得到的错误是

Can't connect to local MySQL server through socket '/cloudsql/something:else'

我正在运行osx,我显然安装了google cloud sdk以及app引擎SDK,我不确定我错过了什么。

由于

1 个答案:

答案 0 :(得分:2)

它无法连接到它,因为您的本地环境无法识别主机/cloudsql/something:else,这只能在生产环境中识别。

您可以按照这些方法使其在开发和生产环境中运行。

在生产和本地

中使用相同的生产Cloud SQL实例

首先,您必须继续Google Cloud Console才能访问当前的IP。

授予您当前IP

的访问权限
  1. 转到Cloud SQL控制台,单击您的实例名称。
  2. 点击“修改”按钮
  3. 在分配IP地址中,选择“分配IP地址”
  4. 在“授权IP地址”下方,在开发计算机上添加IP地址。
  5. 数据库设置

    然后使用以下设置:

    #!/usr/bin/env python
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'USER': 'root',
            'PASSWORD': '<your-database-password>',
            'HOST': '<your-database-ip>',
            'NAME': '<your-database-name>',
        }
    }
    

    为生产和开发服务器使用单独的不同数据库

    您可以分离生产和本地开发服务器的设置:

    if os.getenv("SERVER_SOFTWARE", "").startswith("Google App Engine"):
        # production
        DATABASES = {
            # production database settings
        }
    else:
        # local dev server
        DATABASES = {
            # local database settings
        }