尝试按照此处的说明在Heroku上设置Django实例。
一直到安装芹菜,直到以下步骤:
$ python manage.py syncdb
当我得到以下错误:
引发ImproperlyConfigurated("settings.DATABASES不正确已配置。"django.core.exceptions.ImproverlyConfigured:设置。DATABASES配置不正确。请提供发动机价值有关详细信息,请查看设置文档。
我相信我的settings.py
文件位于(project-name/project-name)
的正确位置,并且我正在运行django 1.4.3,但当我尝试运行manage.py diffsettings
时,我得到以下输出:
BROKER_BACKEND='django'###数据库={默认值:{ENGINE:'django.db.backends.dummy','TEST_MIRROR':无,'NAME':'',"TEST_CHARSET":无,"TIME_ZONE":"UTC","TEST_COLLATION":无,"PORT":","HOST":"","USER":","TEST_NAME":无,"PASSWORD":","选项":{}}
完全不知道django.db.backends.dummy
条目来自哪里,我的settings.py
有'ENGINE': 'django.db.backends.postgresql_psycopg2'
,我认为这是正确的条目,尽管Heroku指令没有告诉你在任何时候更新它。
有什么想法我需要在这里编辑吗?
我遇到了同样的问题。在Heroku文档中https://devcenter.heroku.com/articles/django#prerequisites,它说要在settings.py
中添加以下内容:
DATABASES['default'] = dj_database_url.config()
您可以传入以下参数:
DATABASES['default'] = dj_database_url.config(default='postgres://user:pass@localhost/dbname')
这将使您能够在本地和Heroku上进行开发。但真正解决我问题的部分是,DATABASE_URL的Heroku配置环境变量实际上并没有设置。为了设置这个,我运行了
$ heroku config
我看到数据库URL被分配给一个单独的配置变量。所以我创建了一个新的变量:
$ heroko config:add DATABASE_URL={#the database url}
这解决了我的问题。我希望它能帮助其他有类似问题的人。
尝试在设置.py 中的DATABASE设置之后添加这些行
# Your Database setting.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '', # 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.
}
}
# Add these two lines.
import dj_database_url
DATABASES['default'] = dj_database_url.config(default='sqlite://db/sqlite3.db')
非常感谢Chatri建议添加default='sqlite://db/sqlite3.db’解决了这个问题。