I settings.py
i originalkoden som du länkade
till, det verkar som att du har två motstridiga deklarationer för dina DATABASES
inställning:
1) rad 3:
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
2) rad 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) Dessutom ser tilläggskoden för din senaste redigering ut som ännu en metod för att specificera anslutningsargumenten, som förmodligen återigen förnekar effekterna av de tidigare deklarationerna.
Dessa metoder är inte avsedda att staplas på varandra. Du vill bara välja en.
Dessutom, tekniskt sett, som initiator av en anslutning på klientsidan till en db-server, är det meningen att du ska veta om servern ska nås via TCP (och i det här fallet dess värdnamn eller IP-adress plus port), eller genom en Unix-domänsocket-fil, och i så fall dess fullständiga katalogsökväg (som börjar med ett snedstreck). I båda fallen går detta in i HOST
del av anslutningsparametrarna.
Postgres tillhandahåller standardvärden för alla dessa, men så fort du blandar och matchar olika programvarudelar från olika källor hjälper dessa standardvärden inte längre och att ge explicita värden blir ett krav.
När du är osäker på sockets sökväg, inuti psql
när den är ansluten som postgres-användare kan denna sökväg erhållas med SQL-kommandot:
SHOW unix_socket_directory;
Den här inställningen finns också på serversidan postgresql.conf
konfigurationsfil.