Niedawno umieściłem aplikację Django na Heroku. Strona główna wygląda w porządku, ale gdy próbuję przejść do strony, która polega na wykonaniu kwerendy (np p = Photo.objects.get(title=title)
), otrzymuję ten błąd:OperationalError nie mógł połączyć się z serwerem
could not connect to server: Connection refused
Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?
zgodnie z this answer, zrobiłem $ heroku pg:promote HEROKU_POSTGRESQL_GREEN_URL
Następnie w moim settings.py:
DATABASES = {'default': dj_database_url.config(default=os.environ['DATABASE_URL'])}
Nadal mam ten sam błąd, więc próbowałem patrząc na wyniki to (jak sugeruje this answer):
$ heroku run python manage.py shell
>>> from django.conf import settings
>>> print settings.DATABASES['default']
{'TIME_ZONE': 'UTC', 'TEST_MIRROR': None, 'NAME': 'snorthway', 'OPTIONS': {},
'HOST': 'localhost', 'TEST_NAME': None, 'PASSWORD': '******', 'ENGINE':
'django.db.backends.postgresql_psycopg2', 'PORT': '', 'USER': 'snorthway',
'TEST_COLLATION': None, 'TEST_CHARSET': None}
W tym momencie uświadomiłem sobie, że nie wiem, czego powinienem w tym momencie szukać. Nadal nie rozumiem, co oznacza błąd, więc nie jestem pewien, jak to zrobić z debugowaniem.
Czy jesteś w stanie do kwerendy bazy danych z powłoki? Jak importowanie modeli, a następnie uruchamianie p = Photo.objects.get (title = title)? –
Nie, pojawia się ten sam błąd, gdy importuję modele i uruchamiam coś w stylu 'print Photo.objects.all()'. – snorthway
Po uruchomieniu 'heroku config', widzisz' DATABASE_URL' na liście zmiennych konfiguracyjnych? Ponadto nie powinieneś potrzebować części 'default ='; Myślę, że powinno to być po prostu 'dj_database_url.config (os.environ ['DATABASE_URL'])' – jacobian