W settings.py
w oryginalnym kodzie, który powiązany
wygląda na to, że masz dwie sprzeczne deklaracje dla swoich DATABASES
ustawienie:
1) wiersz 3:
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
2) linia 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) Ponadto dodatkowy kod ostatniej edycji wygląda jak kolejna metoda określania argumentów połączenia, która prawdopodobnie ponownie neguje skutki poprzednich deklaracji.
Te metody nie mają być nakładane na siebie. Chcesz wybrać tylko jeden.
Ponadto, technicznie, jako inicjator połączenia po stronie klienta z serwerem db, powinieneś wiedzieć czy serwer ma być osiągalny przez TCP (i w tym przypadku jego nazwę hosta lub adres IP plus port) lub przez plik gniazda domeny uniksowej, iw tym przypadku pełną ścieżkę do katalogu (zaczynając od ukośnika). W obu przypadkach trafia to do HOST
część parametrów połączenia.
Postgres zapewnia wartości domyślne dla wszystkich z nich, ale gdy tylko połączysz i dopasujesz różne części oprogramowania z różnych źródeł, te wartości domyślne już nie pomogą i podanie wyraźnych wartości staje się wymogiem.
W razie wątpliwości co do ścieżki gniazda, wewnątrz psql
po połączeniu jako użytkownik postgres, tę ścieżkę można uzyskać za pomocą polecenia SQL:
SHOW unix_socket_directory;
To ustawienie jest również obecne w pliku postgresql.conf
po stronie serwera plik konfiguracyjny.