【问题标题】:Heroku/Django - Cannot find Postgresql dbHeroku/Django - 找不到 Postgresql 数据库
【发布时间】:2019-12-06 15:37:09
【问题描述】:

当我在 heroku 中运行我的服务器时,我收到以下错误消息:

Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

在我的 heroku 应用程序上,它说它确实添加了 Postgres db 插件。

数据库设置

DATABASES = {
    'default': {}
}

try:
    from .local_settings import LOCAL_DATABASE_SETTING

    DATABASES['default'] = LOCAL_DATABASE_SETTING
except ImportError:
    DATABASES['default'] = {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'heroku-postgresql',
        }

【问题讨论】:

  • 但是你配置 Django 来使用那个数据库了吗?如何?您使用的是 django-heroku 还是 dj-database-url?显示您的 DATABASES 设置。
  • 是的,没错。 Heroku 不会为您提供本地数据库。见devcenter.heroku.com/articles/heroku-postgresql

标签: python django postgresql heroku


【解决方案1】:

这不是您在 Heroku 上配置数据库的方式。

Heroku 确实让它变得简单;你要做的是fully documented。但总结一下:安装 django-heroku 包,并在设置文件的末尾调用 django_heroku.settings(locals())。然后,您可以删除 LOCAL_DATABASE_SETTING 内容。

【讨论】:

  • 我将此添加到 settings.py 的末尾(并阅读了文档),但它仍然不起作用。
  • Django_heroku 也在 localhost 上破坏了它
【解决方案2】:

看了django_herokudoes with DATABASE_URL,发现它使用了dj-database-url

这个简单的 Django 实用程序 <...> 返回一个 Django 数据库连接 字典,填充了您的 URL 中指定的所有数据

所以我想到了这个解决方案:

## shell
$ pipenv install dj-database-url

## settings.py
import dj_database_url

# set default value
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'db_name',
    }
}

# if environment variable present, it must be Heroku
if 'DATABASE_URL' in os.environ:
    # replace default with parsed value
    DATABASES['default'] = dj_database_url.config(ssl_require=True)

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 2021-09-01
    • 2014-03-04
    • 2016-12-07
    • 2021-06-17
    • 1970-01-01
    • 2015-10-11
    • 2020-12-29
    • 2013-01-18
    相关资源
    最近更新 更多