如何在 OpenShift 中将 MySQL Cartridge 连接到 Django

How to connect MySQL Cartridge to Django in OpenShift

我已经在 OpenShift 中安装了 django 1.8.4/Python 3.3 应用程序并添加了一个 MySQL 5.5 卡带。现在我想让 django 使用 MySQL 而不是 sqlite3。为此,我将 setup.py 从

更改为
install_requires=[
    'Django==1.8.4'
],

install_requires=[
    'Django==1.8.4',
    'mysqlclient'
],

我把wsgi/myproject/myproject/settings.py 改成了

DATABASES = {
    'default': {
        # GETTING-STARTED: change 'db.sqlite3' to your sqlite3 database:
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(DATA_DIR, 'db.sqlite3'),
    }
}

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysql_db_name', 
        'USER': 'mysql_username', 
        'PASSWORD': 'xxxxxx', 
        'HOST': os.environ['OPENSHIFT_DB_HOST'],
        'PORT': os.environ['OPENSHIFT_DB_PORT'],
    }
}

当我 git 推送到 OpenShift 时,出现以下错误:

remote: Executing 'python /var/lib/openshift/5642f9ad7628e16a6300030a/app-root/runtime/repo//wsgi/myproject/manage.py migrate --noinput'       
remote: Traceback (most recent call last):       
remote:   File "/opt/rh/python33/root/usr/lib64/python3.3/os.py", line 673, in __getitem__       
remote:     value = self._data[self.encodekey(key)]       
remote: KeyError: b'OPENSHIFT_DB_HOST'       

我做错了什么?

谢谢,

贾斯珀

如错误消息所述,OPENSHIFT_DB_HOST 似乎不是正确的环境变量。尝试使用 OPENSHIFT_MYSQL_DB_HOST(并为其他变量包括数据库类型 _MYSQL)。

您实际上也可以将变量用于用户名和密码,详情请见此处: https://developers.openshift.com/en/managing-environment-variables.html#database-variables