В settings.py
в оригиналния код, който свързахте
към, изглежда, че имате две противоречиви декларации за вашите DATABASES
настройка:
1) ред 3:
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
2) ред 16:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'traineeworld', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
3) Освен това допълнителният код на последната ви редакция изглежда като още един метод за указване на аргументите за свързване, който вероятно отрича отново ефектите от предишните декларации.
Тези методи не са предназначени да се натрупват един върху друг. Искате да изберете само един.
Освен това технически, като инициатор на връзка от страна на клиента към db сървър, вие трябва да знаете ако сървърът трябва да бъде достигнат чрез TCP (и в този случай неговото име на хост или IP адрес плюс порт), или чрез сокет файл на домейн на Unix, и в този случай неговия пълен път на директория (започващ с наклонена черта). И в двата случая това влиза в HOST
част от параметрите на връзката.
Postgres предоставя стойности по подразбиране за всички тях, но веднага щом смесите и съчетаете различни софтуерни части от различни източници, тези стойности по подразбиране вече не помагат и даването на изрични стойности се превръща в изискване.
Когато се съмнявате относно пътя на сокета, вътре в psql
когато е свързан като потребител на postgres, този път може да бъде получен чрез SQL командата:
SHOW unix_socket_directory;
Тази настройка присъства и в postgresql.conf
от страната на сървъра конфигурационен файл.