在Render.com上启动的Django web应用程序中,“无法将主机名“{db名}”转换为地址:名称或服务未知”发生了错误

结论

尽管可能性之一是因为试用期已过而停止使用的数据库。

发生的错误实际上

我以前用Django制作的Web应用在Render.com上启动过。一开始,我能够顺利地使用应用程序,但有一天当我尝试登录到Web应用程序的帐户时,出现了一个错误:”无法将主机名”{db名}”转换为地址:无法识别的名称或服务”,导致无法使用Web应用程序。

调查

我参考了以下文章。

 

Render.com似乎有一个数据库的试用期(当前为90天)。一旦超过试用期,如果不升级为付费计划,似乎将无法使用该数据库。

对于我而言

我之前以为自己使用的是SQLite3,所以认为即使试用期过后也没问题。但事实似乎是我误解了,实际上是在Render.com上使用PostgreSQL数据库。

在调查的基础上采取相应措施

    1. 在render.yaml中,已删除了以下红色部分的”databases”块。

 

    1. render.yaml

 

    1. – databases:

 

    1. – – name: django_render_db

 

    1. – region: singapore

 

    1. – plan: free

 

    1. – databaseName: django_render_db

 

    1. – user: django_user

services:
– type: web
name: django_render
env: python
region: singapore
buildCommand: ‘./build.sh’
startCommand: ‘gunicorn config.wsgi:application’
plan: free
branch: main
healthCheckPath: /
envVars:
– key: DATABASE_URL
fromDatabase:
name: django_render_db
property: connectionString
– key: SECRET_KEY
generateValue: true
– key: WEB_CONCURRENCY
value: 4
autoDeploy: true

对config目录中的settings.py中的DATABASES定义进行了如下修改(添加了绿色部分,删除了红色部分)。
settings.py

+ DATABASES = {
+ ‘default’: {
+ ‘ENGINE’: ‘django.db.backends.sqlite3’,
+ ‘NAME’: os.path.join(BASE_DIR, ‘db.sqlite3’),
+ }
+ }

– default_dburl = “sqlite:///” + str(BASE_DIR / “db.sqlite3”)
– DATABASES = {
– “default”: config(“DATABASE_URL”, default=default_dburl, cast=dburl),
– }

通过这个方法,现在可以使用sqlite3来保存数据库,并且目前可以顺利启动Web应用。

终结

我仅仅集中在我的案例上,发生错误的情况以及yaml、settings文件对每个人来说也是不同的。在这篇文章中,虽然不能解决所有”could not translate host name”错误的情况,但只要能对一个人有帮助,我就感到非常高兴。

就是这样。

请引用以下内容(只需要一个选项)

 

bannerAds