Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 配置不正确:设置。数据库配置不正确。请提供发动机值。有关详细信息,请查看设置文档_Django_Heroku - Fatal编程技术网

Django 配置不正确:设置。数据库配置不正确。请提供发动机值。有关详细信息,请查看设置文档

Django 配置不正确:设置。数据库配置不正确。请提供发动机值。有关详细信息,请查看设置文档,django,heroku,Django,Heroku,我完全按照heroku的指示做了 但当我运行heroku时,请运行python manage.py syncdb 它说配置不正确:settings.DATABASES配置不正确。请提供发动机值。查看设置文档了解更多详细信息。 这就是我的settings.py文件的外观。我尝试了所有的解决方案,但似乎没有任何帮助 Django_synapse项目的Django设置。 你有没有在网站上尝试过文档中的内容 上面写着 Django设置 接下来,为Heroku环境配置应用程序,包括 Heroku的Post

我完全按照heroku的指示做了

但当我运行heroku时,请运行python manage.py syncdb

它说
配置不正确:settings.DATABASES配置不正确。请提供发动机值。查看设置文档了解更多详细信息。

这就是我的settings.py文件的外观。我尝试了所有的解决方案,但似乎没有任何帮助

Django_synapse项目的Django设置。
你有没有在网站上尝试过文档中的内容

上面写着

Django设置

接下来,为Heroku环境配置应用程序,包括 Heroku的Postgres数据库dj数据库url模块将解析 数据库URL环境变量的值,并将其转换为 Django能理解的东西。

确保“dj数据库url”在您的需求文件中,然后添加 下面是settings.py文件的底部:

设置.py

# Parse database configuration from $DATABASE_URL
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 = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', 
        'NAME': 'your_db_name',                     
        'USER': 'your_db_user_name',
        'PASSWORD': 'your_password',
        'HOST': 'ec2-23-21-133-106.compute-1.amazonaws.com', # Or something like this
        'PORT': '5432',                     
    }
}

Sultan和Joe都是正确的,如果你把他们放在一起挖掘一点,它会起作用,我只想用一个对我有帮助的补充,把它说得更清楚一点。Heroku网站上的这些内容解释了如何设置,包括Sultan提到的内容,并将此部分添加到settings.py:

# Parse database configuration from $DATABASE_URL
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'),
)
然后,(这些说明没有提到的)在Heroku帐户中,转到数据库部分,选择要使用的数据库。转到“连接设置”(两个方向相反的小箭头)并选择Django选项。该代码应该与Joe提到的代码类似:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', 
        'NAME': 'your_db_name',
        'HOST': 'your_host',
        'PORT': '5432',                    
        'USER': 'your_db_user_name',
        'PASSWORD': 'your_password',                             
    }
}

将其粘贴到settings.py文件的底部并同步数据库。

您正在定义
数据库={'default':{…}
两次

解决方案:

如果您使用heroku为您的数据库提供服务,那么请使用

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.
    }
}
导入dj_数据库_url

DATABASES['default'] =  dj_database_url.config()
如果您试图连接到外部数据库服务器,请评论上面的两行并使用

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.
    }
}

为什么不试试这个:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2', 
    'NAME': 'yourdatabasename',
    'HOST': 'localhost',
    'PORT': '',                    
    'USER': 'yourusername',
    'PASSWORD': 'yourpassword',
    }
}
db_from_env = dj_database_url.config()
DATABASES['default'].update(db_from_env)
然后应用此命令:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2', 
    'NAME': 'yourdatabasename',
    'HOST': 'localhost',
    'PORT': '',                    
    'USER': 'yourusername',
    'PASSWORD': 'yourpassword',
    }
}
db_from_env = dj_database_url.config()
DATABASES['default'].update(db_from_env)

苏丹,我是否需要为heroku定义一个数据库URL环境变量?这个值应该是多少?哦,我现在看到了!但它的价值应该是什么呢?我很困惑。它应该是一个特定的值还是我可以选择它?算了吧!添加了一个数据库并查看heroku配置以获取URL。谢谢!:)