渲染 PostgreSQL 无法将主机名转换为 Django 中的地址

问题描述 投票:0回答:2

通过 Render,我想使用他们的免费 PostgreSQL 计划来托管我的数据库。我正在使用 Django,但我很困惑该使用什么作为主机。 Render 上的仪表板为我提供了一个外部数据库 url

postgres://{given_username_by_render}:******-a.oregon-postgres.render.com/{database_name} 
如果我在数据库设置中使用此链接作为主机

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'name',
        'USER': 'username',
        'HOST' : 'postgres://{given_username_by_render}:******-a.oregon-postgres.render.com/{database_name}',
        'PASSWORD': env('PSGS'),
    }
}

我在迁移时遇到此错误。我之前使用过elephantsql,他们给了我一个简单的主机url,比如tiny.db.elephantsql.com,它插入主机名并且它有效,但在使用Render的情况下不起作用

RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': could not translate host name 
"postgres://USER:PASSWORD@EXTERNAL_HOST:PORT/DATABASE"
to address: Unknown server error

我的主要问题是,我在 django 的数据库设置中使用什么作为主机名?还是我做的这一切都是错的?如果您没有渲染经验,那么您能给我推荐一些可以学习此类知识的地方吗?

python django deploying
2个回答
3
投票

主持人只是

******-a.oregon-postgres.render.com
@
之后和
/{database_name}
之前的所有内容。

一般来说,URL会有这样的结构:

postgres://{user}:{password}@{host}:{port}/{database}

如果您愿意,可以直接通过

dj-database-url
使用 URL。如果 Render 为您填充了
DATABASE_URL
环境变量,则该库将开箱即用,只需很少的配置。


0
投票

您必须插入仪表板连接选项卡中显示的主机名。

但完整主机名是

<YOUR_HOST_NAME>.oregon-postgres.render.com

这解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.