我在 google appengine 和 google cloud sql 上托管了一个 django 应用程序作为数据库。我点击此链接 https://cloud.google.com/appengine/docs/python/cloud-sql/django将数据库模式同步并迁移到 cloudsql。这对我来说很好。但是当我今天尝试 syncdb 时,出现如下所示的错误。
OperationalError: could not connect: https://www.googleapis.com/sql/v1/jdbc/openConnection?alt=proto returned "Not Found">
我的数据库设置是
if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'):
# Running on production App Engine, so use a Google Cloud SQL database.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '/cloudsql/<projectname>:<instancename>',
'NAME': '<db-name>',
'USER': 'root',
}
}
elif os.getenv('SETTINGS_MODE') == 'prod':
# Running in development, but want to access the Google Cloud SQL instance in production.
DATABASES = {
'default': {
'ENGINE': 'google.appengine.ext.django.backends.rdbms',
'INSTANCE': '<projectname>:<instancename>',
'NAME': 'db-name',
'USER': 'root',
}
}
请您参考如下方法:
我在 google api 控制台更改了我的数据库设置并授权了我的本地 ip 地址。现在一切正常。
我的新数据库设置是
if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'):
# Running on production App Engine, so use a Google Cloud SQL database.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '/cloudsql/<projectname>:<instancename>',
'NAME': '<db-name>',
'USER': 'root',
}
}
elif os.getenv('SETTINGS_MODE') == 'prod':
# Running in development, but want to access the Google Cloud SQL instance in production.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '<instance-ip-address>',
'NAME': 'db-name',
'USER': 'root',
'PASSWORD': '<password>'
}
}
