创建 Heroku Django 应用程序后同步数据库的问题

Posted

技术标签:

【中文标题】创建 Heroku Django 应用程序后同步数据库的问题【英文标题】:Problems with syncdb after creating Heroku Django app 【发布时间】:2013-08-02 22:15:53 【问题描述】:

我正在使用 https://devcenter.heroku.com/articles/django 教程在 Heroku 上设置一个 Django 应用程序,我在运行 heroku run python manage.py syncdb 时遇到了以下错误

ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.

我在本地同步时遇到同样的错误。我已经阅读了 *** 上的所有线程,但没有解决这个问题。 settings.py的相关部分:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '',                      # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    



import dj_database_url
DATABASES['default'] =  dj_database_url.config()

# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

# Allow all host headers
ALLOWED_HOSTS = ['*']

# Static asset configuration
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),

【问题讨论】:

错误很明显。您尚未指定后端数据库和正确的凭据。在DATABASES 设置中 @karthikr 我已经为 settings.py 尝试了不同的选项,但是,在教程中,它没有指定要填写它们,所以我不确定它们应该是什么!你能帮忙吗? Here follow this @karthikr 谢谢,我试过了,得到了同样的错误 【参考方案1】:

在您的设置中输入:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.sqlite3',  # Or another database
        'NAME': 'database.db',                      
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      
        'PORT': '',                      
    

【讨论】:

这是使用 sqlite3 - 我正在尝试设置 Postgres 好吧,然后放 Postgres 在下面查看我的解决方案【参考方案2】:

我不确定本教程为何忽略了这一点——我经常看到类似的问题出现——但这里是我为解决该问题而采取的步骤。也值得阅读 Postgres 文档 - https://devcenter.heroku.com/articles/heroku-postgresql

1) 在终端中使用heroku addons | grep POSTGRES 创建一个 Postgres 数据库

2) 将数据库连接到应用程序 - heroku addons:add heroku-postgresql:dev

3) 将 URL 提升为数据库 URL:heroku pg:promote HEROKU_POSTGRESQL_RED_URL

4) 将此添加到您的 settings.py 中:

DATABASES['default'] = dj_database_url.config(default=os.environ.get('DATABASE_URL'))

【讨论】:

以上是关于创建 Heroku Django 应用程序后同步数据库的问题的主要内容,如果未能解决你的问题,请参考以下文章

当我在服务器上删除数据库时,Heroku 不会删除数据库(Django 应用程序)

在 Heroku 上部署 Django API + React 应用程序

Django,创建反应应用程序,Heroku

将 Django 应用程序推送到 Heroku 后,Dynos 字段为空白

在 Heroku 上部署时出现 Django 1.7 迁移错误

如何使用 Python 迁移将 Heroku Django 应用程序的新模型表添加到远程 Heroku Postgres?