[PYTHON] Heroku에 장고 배포 (Psycopg2 오류)
PYTHONHeroku에 장고 배포 (Psycopg2 오류)
그래서 나는 장고와 함께 heroku에서 시작 가이드를 따르고있다. 그러나이 명령을 실행할 때 :
heroku run python manage.py syncdb
이 오류가 발생했습니다.
psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?
나는 db가 아직 설정되지 않았다고 생각했다. 그래서 shared_db 옵션도 수동으로 추가했다.
heroku addons:add shared-database:5mb
하지만 .. 나는 여전히 같은 오류가 발생합니다. 뭐라 구요?
해결법
-
==============================
1.편집 :
편집 :
@ mipadi가 여기에 지적했듯이 (http://stackoverflow.com/questions/13001031/django-heroku-settings-injection/13092534), 실제로는 이렇게 간단 할 수 있습니다 :
import dj_database_url DATABASES = {'default' : dj_database_url.config() }
이것은 DATABASE_URL 환경 변수가 설정된 경우에 효과적입니다. heroku : pg_promote가 거기 도착합니다. 아래 세부 정보
Heroku에 Postgres가 있는지 확인하십시오.
heroku addons:add heroku-postgresql:dev
1 단계 : 데이터베이스 URL 파악
heroku config | grep POSTGRESQL
결과는 다음과 같습니다.
2 단계 : 이전 단계에서 설정 이름 (예 : HEROKU_POSTGRESQL_ROSE_URL)을 가져 와서 설정 파일에 저장합니다.
DATABASES = {'default': dj_database_url.config(default=os.environ["HEROKU_POSTGRESQL_ROSE_URL"])}
[업데이트] Ted가 지적했듯이 색상 URL을 DATABASE_URL 변수로 승격시키는 방법이 있습니다.
heroku pg:promote HEROKU_POSTGRESQL_ROSE_URL
데이터베이스 설정에서 이국적인 색 URL과 달리 DATABASE_URL을 사용할 수 있습니다.
DATABASES = {'default': dj_database_url.config(default=os.environ["DATABASE_URL"])}
밥은 당신의 삼촌입니다.
-
==============================
2.나는 settings.py에 다음 코드를 추가하여 작동시키지 만, Heroku가 그것을 위해 추가하지 않은 몇 가지 이유로 보인다.
나는 settings.py에 다음 코드를 추가하여 작동시키지 만, Heroku가 그것을 위해 추가하지 않은 몇 가지 이유로 보인다.
일반적으로 항상 동적으로 Heroku에 코드를 추가했지만 django 1.4 이후에는 더 이상 사용되지 않습니다. 아니면 그냥 뭔가 잘못하고있는 중이 었어.
어쨌든이 코드는 settings.py에 추가하는 코드이며 이전과 같이 작동해야합니다.
import sys import urlparse import os # Register database schemes in URLs. urlparse.uses_netloc.append('postgres') urlparse.uses_netloc.append('mysql') try: # Check to make sure DATABASES is set in settings.py file. # If not default to {} if 'DATABASES' not in locals(): DATABASES = {} if 'DATABASE_URL' in os.environ: url = urlparse.urlparse(os.environ['DATABASE_URL']) # Ensure default database exists. DATABASES['default'] = DATABASES.get('default', {}) # Update with environment configuration. DATABASES['default'].update({ 'NAME': url.path[1:], 'USER': url.username, 'PASSWORD': url.password, 'HOST': url.hostname, 'PORT': url.port, }) if url.scheme == 'postgres': DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2' if url.scheme == 'mysql': DATABASES['default']['ENGINE'] = 'django.db.backends.mysql' except Exception: print 'Unexpected error:', sys.exc_info()
-
==============================
3.내 앱 구조가 꺼져있었습니다 ... heroku는 다음과 같이 구조를 원합니다.
내 앱 구조가 꺼져있었습니다 ... heroku는 다음과 같이 구조를 원합니다.
toplevel requirements.txt myapp manage.py all other django stuff
-
==============================
4.나는 똑같은 문제를 겪었다.
나는 똑같은 문제를 겪었다.
Step1 : Phillip의 1 단계에 따라 데이터베이스 이름 (색상)을 얻습니다.
2 단계:
$ heroku pg:promote HEROKU_POSTGRESQL_<COLOR>
출력으로 이어진다.
Promoting HEROKU_POSTGRESQL_<COLOR> to DATABASE_URL... done
-
==============================
5.이것을 requirements.txt에 추가해야합니다.
이것을 requirements.txt에 추가해야합니다.
psycopg2
기본적으로 Heroku는 Postgres 데이터베이스를 구성하고 settings.py (https://devcenter.heroku.com/articles/django#postgres_database_config)에 코드를 주입합니다. 이것은 환경 변수 DATABASE_URL에서 읽지 만 psycopg2가 설치되어 있어야합니다.
from https://stackoverflow.com/questions/10596893/deploying-django-to-heroku-psycopg2-error by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] JSON에서 PyMongo ObjectId를 deserialize 할 수 없습니다. (0) | 2018.11.27 |
---|---|
[PYTHON] 파이썬을 사용하여 CSV 파일 읽기 (0) | 2018.11.27 |
[PYTHON] TensorFlow : 반복 불가능한 결과 (0) | 2018.11.27 |
[PYTHON] 파이썬에서 multiprocessing.pool으로 전역 잠금 / 세마포어를 만드는 법? (0) | 2018.11.27 |
[PYTHON] pandas는 DataFrame에서 주어진 색인의 위치를 얻습니다. (0) | 2018.11.27 |