【发布时间】:2013-04-18 16:37:29
【问题描述】:
当我尝试加载任何页面时,都会出现这种错误。
运行 sqlall throw the ssh 显示数据库 shema 正常。
我有这样一个设置文件:
if ON_OPENSHIFT:
# os.environ['OPENSHIFT_MYSQL_DB_*'] variables can be used with databases created
# with rhc cartridge add (see /README in this git repo)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': os.path.join(os.environ['OPENSHIFT_DATA_DIR'], 'sqlite3.db'), # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': os.path.join(PROJECT_DIR, 'sqlite3.db'), # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
我在 /data 目录中有我的数据库的副本。
另外,我有这样的启动钩子:
source $OPENSHIFT_HOMEDIR/$cartridge_type/virtenv/bin/activate
if [ ! -f $OPENSHIFT_DATA_DIR/sqlite3.db ]
then
echo "Copying $OPENSHIFT_REPO_DIR/wsgi/openshift/sqlite3.db to $OPENSHIFT_DATA_DIR"
cp "$OPENSHIFT_REPO_DIR"wsgi/openshift/sqlite3.db $OPENSHIFT_DATA_DIR
python "$OPENSHIFT_REPO_DIR".openshift/action_hooks/secure_db.py | tee ${OPENSHIFT_DATA_DIR}/CREDENTIALS
else
echo "Executing 'python $OPENSHIFT_REPO_DIR/wsgi/openshift/manage.py syncdb --noinput'"
python "$OPENSHIFT_REPO_DIR"wsgi/openshift/manage.py syncdb --noinput
fi
echo "Executing 'python $OPENSHIFT_REPO_DIR/wsgi/openshift/manage.py collectstatic --noinput'"
python "$OPENSHIFT_REPO_DIR"wsgi/openshift/manage.py collectstatic --noinput
所以一切似乎都很好。
(但是,在我看来,启动挂钩尚未启动。)
edit :我不知道为什么,但是在手动将数据库复制到 /data 之后 - 它工作正常!
【问题讨论】:
-
是否有您忘记在 OpenShift 上运行的迁移?
-
@karthikr,不。 south 说数据库是最新的。
-
另一个“愚蠢”的问题 - 迁移是否已上传到生产服务器?
-
@karthikr,我在服务器 trought ssh 上向南运行,所以它一定在那里。在我看来,部署挂钩更新了 \wsgi\sqlite.db 的架构,但不会更改 \data\sqlite.db。正如它在问题中提到的那样:在手动将 sqlite.db cping 到 \data 之后,它开始正常工作。