GAE Django cloudsql 套接字
Posted
技术标签:
【中文标题】GAE Django cloudsql 套接字【英文标题】:GAE Django cloudsql socket 【发布时间】:2014-05-12 09:32:15 【问题描述】:我正在尝试在 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 engine SDK,我不确定我缺少什么。
谢谢
【问题讨论】:
您是否为您的数据库设置了 IP 地址以供外部访问? @PaulCollingwood 不,我不需要它吗? 如果您想从 GAE 应用程序以外的其他东西连接到它,那么您可以这样做,是的,据我所知。您将按每分钟付费。 因为当它使用套接字时,它将使用 oauth2 并且在数据库看来连接来自本地主机,所以如果我通过这种方式,我不需要,至少那是我从 django 教程中了解到的没有提到外部 IP,但我确实读到了与套接字的连接需要授予 localhost 的权限 好吧,恐怕我对此一无所知。 AFAIK 用于外部访问,您需要一个 IP。我相信很快就会有更多知识渊博的人出现:) 【参考方案1】:无法连接,因为您的本地环境无法识别主机/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
【讨论】:
以上是关于GAE Django cloudsql 套接字的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 unix 套接字从托管在不同 GCP 项目中的 App Engine 柔性环境连接到 Cloud SQL