0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Render.com上で起動していたDjangoのwebアプリで`could not translate host name "{db名}" to address: Name or service not known`というエラー

Last updated at Posted at 2023-06-05

結論

あくまで原因の1つにはなりますが、使用していたデータベースの試用期間が過ぎたため停止された可能性があります。

実際に起きたエラー

Djangoで作成していたwebアプリをRender.comで起動していました。起動後、しばらくは問題なくアプリを使用できていたのですが、ある日からwebアプリのアカウントにログインするときにcould not translate host name "{db名}" to address: Name or service not knownというエラーが発生し、webアプリが使用できなくなりました。

調査

以下の記事を参考にしました。

Render.comはDBの試用期間があるようです。(現在は90日間)この試用期間を過ぎると有料プランへアップグレードしない限りDBを使用することができないようです。

私の場合

私の場合sqlite3を使用していたと思っていたため、試用期間を過ぎても問題ないと思っていました。
ただ、これがどうやら思い込みだったようで、実際はPostgreSQLでRender.comのDBを使用していたようです。

調査を踏まえての対応

  1. render.yamlに記述していた「databases」のブロックを削除しました。(以下の赤い部分)
    render.yaml
    - databases:
    -   - name: django_render_db
    -     region: singapore
    -     plan: free
    -     databaseName: django_render_db
    -     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
    
  2. 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エラーの全てのケースを解決できるわけではないですが、誰か1人でも役に立つことがあれば嬉しい限りです。

以上です。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?