質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.38%

django.db.utils.OperationalError: could not connect to server: No such file or directory

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,319

score 15

前提・実現したいこと

ReactDjangoでブログを作りデプロイするところです。
git push heroku masterをしたのですが、エラーが出ます。
データベースを指定できていないようです。
指定の仕方がわからないため苦戦しています。

発生している問題・エラーメッセージ

django.db.utils.OperationalError: could not connect to server: No such file or directory
psycopg2.OperationalError: could not connect to server: No such file or directory
➜  ElectronicJournal git:(master) git push heroku master
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 384 bytes | 384.00 KiB/s, done.
Total 4 (delta 3), reused 0 (delta 0)

文字数制限のためカット


remote: 
remote: Traceback (most recent call last):
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
remote:     self.connect()
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/base/base.py", line 195, in connect
remote:     self.connection = self.get_new_connection(conn_params)
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 178, in get_new_connection
remote:     connection = Database.connect(**conn_params)
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/psycopg2/__init__.py", line 126, in connect
remote:     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
remote: psycopg2.OperationalError: could not connect to server: No such file or directory
remote:     Is the server running locally and accepting
remote:     connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
remote: 
remote: 
remote: The above exception was the direct cause of the following exception:
remote: 
remote: Traceback (most recent call last):
remote:   File "manage.py", line 22, in <module>
remote:     execute_from_command_line(sys.argv)
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
remote:     utility.execute()
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute
remote:     self.fetch_command(subcommand).run_from_argv(self.argv)
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 323, in run_from_argv
remote:     self.execute(*args, **cmd_options)
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 364, in execute
remote:     output = self.handle(*args, **options)
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 83, in wrapped
remote:     res = handle_func(*args, **kwargs)
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 87, in handle
remote:     executor = MigrationExecutor(connection, self.migration_progress_callback)
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/migrations/executor.py", line 18, in __init__
remote:     self.loader = MigrationLoader(self.connection)
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/migrations/loader.py", line 49, in __init__
remote:     self.build_graph()
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/migrations/loader.py", line 212, in build_graph
remote:     self.applied_migrations = recorder.applied_migrations()
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/migrations/recorder.py", line 73, in applied_migrations
remote:     if self.has_table():
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/migrations/recorder.py", line 56, in has_table
remote:     return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/base/base.py", line 256, in cursor
remote:     return self._cursor()
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/base/base.py", line 233, in _cursor
remote:     self.ensure_connection()
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
remote:     self.connect()
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
remote:     raise dj_exc_value.with_traceback(traceback) from exc_value
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
remote:     self.connect()
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/base/base.py", line 195, in connect
remote:     self.connection = self.get_new_connection(conn_params)
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 178, in get_new_connection
remote:     connection = Database.connect(**conn_params)
remote:   File "/app/.heroku/python/lib/python3.6/site-packages/psycopg2/__init__.py", line 126, in connect
remote:     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
remote: django.db.utils.OperationalError: could not connect to server: No such file or directory
remote:     Is the server running locally and accepting
remote:     connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
remote: 
remote: Waiting for release... failed.
To https://git.heroku.com/electronic-journal-asuha.git
   0dfa57a..4e16b5c  master -> master

該当のソースコード

プロジェクトツリー

C:.
│  .gitignore
│  docker-compose.yml
│  manage.py
│  package.json
│  Procfile
│  requirements.txt
│  runtime.txt
│  yarn.lock
│
├─backend
│      Dockerfile
│      requirements.txt
│
├─blog
│  │  admin.py
│  │  apps.py
│  │  forms.py
│  │  models.py
│  │  permissions.py
│  │  serializers.py
│  │  tests.py
│  │  urls.py
│  │  views.py
│  │  __init__.py
│  │
│  ├─migrations
│  │  │  0001_initial.py
│  │  │  0002_comment.py
│  │  │  0003_auto_20190711_0907.py
│  │  │  __init__.py
│  │  │
│  │  └─__pycache__
│  │          0001_initial.cpython-37.pyc
│  │          0002_comment.cpython-37.pyc
│  │          0003_auto_20190711_0907.cpython-37.pyc
│  │          __init__.cpython-37.pyc
│  │
│  ├─static
│  │  └─css
│  │          blog.css
│  │
│  ├─templates
│  │  └─blog
│  │          base.html
│  │          post_detail.html
│  │          post_edit.html
│  │          post_list.html
│  │
│  └─__pycache__
|      文字数制限のためカット
│
├─frontend
│      Dockerfile
│      README.md
│
├─mysite
│  │  settings.py
│  │  urls.py
│  │  wsgi.py
│  │  __init__.py
│  │
│  └─__pycache__
│          settings.cpython-37.pyc
│          urls.cpython-37.pyc
│          wsgi.cpython-37.pyc
│          __init__.cpython-37.pyc
│
├─public
│      favicon.ico
│      index.html
│      manifest.json
│
└─src
    │  App.js
    │  App.test.js
    │  index.js
    │  routes.js
    │  serviceWorker.js
    │
    ├─components
    │      Article.js
    │      Comment.js
    │      CommentForm.js
    │      Form.js
    │      Loading.js
    │      requirements.txt
    │
    ├─containers
    │      ArticleDetailView.js
    │      ArticleListView.js
    │      Layout.js
    │      Login.js
    │      Signup.js
    │
    └─store
        │  utility.js
        │
        ├─actions
        │      actionTypes.js
        │      auth.js
        │
        └─reducers
                auth.js


setting.py

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

文字数制限のためカット

ALLOWED_HOSTS = ['electronic-journal-asuha.herokuapp.com']


文字数制限のためカット


# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.path.join(BASE_DIR, '/var/run/postgresql/.s.PGSQL.5432'),
    }
}





文字数制限のためカット


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

CORS_ORIGIN_ALLOW_ALL = True

ACCOUNT_EMAIL_VERIFICATION = 'none'
ACCOUNT_AUTHENTICATION_METHOD = 'username'
ACCOUNT_EMAIL_REQUIRED = False

wsgi.py

import os

from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

application = DjangoWhiteNoise(application)

Procfile

release: python manage.py migrate
web: gunicorn mysite.wsgi --log-file -

runtime.txt

python-3.6.6

requirements.txt

Django>=2.0,<3.0
psycopg2>=2.7,<3.0
djangorestframework
djangorestframework-jwt
django-rest-auth>=0.9.3
django-allauth>=0.37.1
django-cors-headers
gunicorn==19.7.1
django-heroku
whitenoise==3.3.1
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

この記事で解決しました。
settings.pyにこれを追記します。

import dj_database_url

db_from_env = dj_database_url.config(conn_max_age=600, ssl_require=True)
DATABASES['default'].update(db_from_env)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.38%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る