PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Django mit PostgreSQL-App auf Heroku wird nicht synchronisiert

In der settings.py im Originalcode, den Sie verlinkt haben Anscheinend haben Sie zwei widersprüchliche Deklarationen für Ihre DATABASES Einstellung:

1) Zeile 3:

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

2) Zeile 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) Außerdem sieht der zusätzliche Code Ihrer letzten Bearbeitung wie eine weitere Methode aus, um die Verbindungsargumente anzugeben, die wahrscheinlich die Auswirkungen der vorherigen Deklarationen wieder negiert.

Diese Methoden sollen nicht aufeinander gestapelt werden. Sie möchten nur einen auswählen.

Technisch gesehen sollten Sie als Initiator einer clientseitigen Verbindung zu einem DB-Server wissen wenn der Server über TCP (und in diesem Fall seinen Hostnamen oder seine IP-Adresse plus Port) oder über eine Unix-Domain-Socket-Datei erreicht werden soll, und in diesem Fall seinen vollständigen Verzeichnispfad (beginnend mit einem Schrägstrich). In beiden Fällen geht dies in den HOST Teil der Verbindungsparameter.

Postgres bietet Standardwerte für all diese, aber sobald Sie verschiedene Softwareteile aus verschiedenen Quellen mischen und anpassen, helfen diese Standardwerte nicht mehr und die Angabe expliziter Werte wird zu einer Anforderung.

Wenn Sie Zweifel über den Pfad des Sockets haben, innerhalb von psql Wenn Sie als Postgres-Benutzer verbunden sind, kann dieser Pfad mit dem SQL-Befehl abgerufen werden:

SHOW unix_socket_directory;

Diese Einstellung ist auch in der serverseitigen postgresql.conf vorhanden Konfigurationsdatei.