我正在尝试在 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 以及应用程序引擎 SDK,我不确定我缺少什么。
谢谢
最佳答案
无法连接到它,因为您的本地环境无法识别主机 /cloudsql/something:else
,这只能在生产环境中识别。
您可以按照这些方法使其在开发和生产环境中运行。
在生产和本地中使用相同的生产 Cloud SQL 实例
首先,您必须转到 Google Cloud Console授予对您当前 IP 的访问权限。
授予访问您当前 IP 的权限
- 转到 Cloud SQL 控制台,点击您的实例名称。
- 点击“编辑”按钮
- 在“分配 IP 地址”中,选择“分配 IP 地址”
- 在“授权 IP 地址”下面,添加您的开发计算机上的 IP 地址。
数据库设置
然后使用如下设置:
#!/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
}
关于python - GAE Django cloudsql 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22788770/