2016-04-28 6 views
2

Ich benutze caravel mit CitusDB und ich habe Probleme mit der Verbindung zum Datenbankknoten. Um ehrlich zu sein, ich habe keine Ahnung, was ich tun soll.Verwenden von CitusDB mit SQL-Alchemie

Ich folgte dem offiziellen installation instructions zu installieren und zu starten.

Ich kann mich in den laufenden Master mit dem psql Skript in /opt/citusdb/4.0/bin anmelden, aber ich kann keine Verbindung von der Anwendung herstellen. Flask-SQLAlchemy unterstützt den postgresql-Dialekt und -Treiber, und der laufende Server scheint sich am 5432-Port zu befinden. Ich versuche es mit psycopg2.

Ich habe den postgresql-Dienst deaktiviert, da dies den Start des Master-Knotens beeinträchtigte.

Dies ist der Fehler:

2016-04-28 10:10:53,487:ERROR:flask_appbuilder.security.sqla.manager:DB Creation and initialization failed: (psycopg2.OperationalError) could not connect to server: No such file or directory 
    Is the server running locally and accepting 
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? 

Antwort

2

Vor allem empfehle ich Citus 5.0 verwenden. Das Dokument, dem Sie gefolgt sind, handelt von CitusDB 4.0 Version, die eine Abzweigung von PostgreSQL war. Derzeit kann Citus als Erweiterung zu PostgreSQL 9.5 installiert werden und hat viele neue Funktionen und Bugfixes. Sie können einen Blick auf Citus installation instructions für 5.0 werfen.

Wenn es nicht möglich ist, zu Citus 5.0 zu wechseln, kann das Problem mit Socket-Dateipfaden zusammenhängen. Könnten Sie versuchen, den Befehl in this answer auszugeben?

1

Dank @Ahmet Eren Başak konnte ich das Problem aus einem neuen Blickwinkel betrachten.

Der Schlüssel zu diesem Problem war die PID-Datei des laufenden Servers. psycopg2 und postgresql beziehen sich allgemein auf das Verzeichnis /var/run/postgresql/, um festzustellen, ob der Server läuft. CitusDB hat anscheinend keine Berechtigung zum Bearbeiten/Erstellen von Dateien in diesem Verzeichnis. Daher wird die PID-Datei in /tmp/ erstellt.

Die Lösung war diese Datei zu /var/run/postgresql/ zu verbinden und dass es gelöst

ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432 
+1

Ich bin nicht sicher, dieses Problem tatsächlich eine Berechtigung ist so viel wie ein Problem mit dem Citus 4.0 build. Es kann '/ tmp' auf allen Plattformen verwenden, während eine" normale "PostgreSQL-Installation'/var/run/postgresql' auf bestimmten Plattformen verwendet. Es ist wahrscheinlich, dass Citus 5.0 und höher dieses Problem überhaupt nicht mehr haben, aber es war gut, die Problemumgehung zu finden! – jasonmp85