V souboru settings.py
v původním kódu, který jste propojili
zdá se, že máte dvě protichůdná deklarace pro vaše DATABASES
nastavení:
1) řádek 3:
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
2) řádek 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) Dodatečný kód vaší poslední úpravy také vypadá jako další metoda pro specifikaci argumentů připojení, která pravděpodobně opět neguje účinky předchozích deklarací.
Tyto metody nejsou určeny k tomu, aby se hromadily jedna na druhé. Chcete vybrat pouze jeden.
Technicky vzato, jako iniciátor připojení na straně klienta k db serveru byste měli vědět pokud má být server dostupný přes TCP (a v tomto případě jeho název hostitele nebo IP adresa plus port), nebo přes soubor soketu domény Unix a v tom případě jeho úplnou cestu k adresáři (začínající lomítkem). V obou případech to jde do HOST
součástí parametrů připojení.
Postgres poskytuje výchozí hodnoty pro všechny z nich, ale jakmile smícháte a spojíte různé části softwaru z různých zdrojů, tyto výchozí hodnoty již nepomáhají a poskytování explicitních hodnot se stává požadavkem.
Pokud jste na pochybách o cestě soketu, uvnitř psql
při připojení jako uživatel postgres lze tuto cestu získat příkazem SQL:
SHOW unix_socket_directory;
Toto nastavení je také přítomno v postgresql.conf
na straně serveru konfigurační soubor.