PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Django con l'app PostgreSQL su Heroku non sincronizzata

In settings.py nel codice originale che hai collegato a, sembra che tu abbia due dichiarazioni contraddittorie per i tuoi DATABASES impostazione:

1) riga 3:

DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}

2) riga 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) Inoltre, il codice aggiuntivo della tua ultima modifica sembra un altro metodo per specificare gli argomenti di connessione, che probabilmente nega di nuovo gli effetti delle dichiarazioni precedenti.

Questi metodi non sono pensati per essere accatastati l'uno sull'altro. Vuoi sceglierne solo uno.

Inoltre, tecnicamente, come iniziatore di una connessione lato client a un server db, dovresti sapere se il server deve essere raggiunto tramite TCP (e in questo caso il suo nome host o indirizzo IP più porta), o tramite un file socket di dominio Unix, e in tal caso il suo percorso di directory completo (che inizia con una barra). In entrambi i casi, questo va nell'HOST parte dei parametri di connessione.

Postgres fornisce valori predefiniti per tutti questi, ma non appena si combinano e abbinano parti software diverse da fonti diverse, queste impostazioni predefinite non aiutano più e fornire valori espliciti diventa un requisito.

In caso di dubbio sul percorso del socket, all'interno di psql quando connesso come utente postgres, questo percorso può essere ottenuto dal comando SQL:

SHOW unix_socket_directory;

Questa impostazione è presente anche in postgresql.conf lato server file di configurazione.