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

Heroku pg:pull kann das Schema nicht füllen

Ich habe den pg:pull geschrieben und pg:push Befehle.

pg:pull und pg:push beide verwenden den pg_dump Befehl und leiten Sie das direkt an pg_restore weiter (Quellcode). Leider gibt es Probleme mit pg:push,pull unter Windows zum Zeitpunkt dieser Antwort, September 2014. Diese Probleme sind nicht unüberwindbar. Wenn Sie also später zu dieser Antwort kommen, überprüfen Sie bitte, ob sie möglicherweise behoben wurde.

Die env Der hier und hier verwendete Befehl ist meiner Meinung nach nicht unter Windows, weshalb Sie die PGUSER- und PGPASSWORD-Sachen ausführen müssen. Allerdings ist der Grund für die env ist das pg_dump benötigt andere Umgebungsvariablen als pg_restore .

Ich habe einmal versucht, das zu beheben, indem ich Popen verwendet habe, um die Befehle unabhängig voneinander einzurichten, und sie dann miteinander verbunden habe, anstatt eine Pipe zu verwenden. Ich konnte es jedoch nicht ganz zum Laufen bringen und musste aufhören.

Ich würde mich sehr freuen, alle Patches zu überprüfen, die den ganzen Weg gehen und dieses Problem beheben, @erwähnen Sie mich einfach in einer Pull-Anfrage an das heroku/heroku-Projekt.

Entschuldigung, dass ich dieses Problem nicht beheben konnte :(

Stattdessen, und bis dies behoben ist, können Sie pg_dump verwenden und pg_restore Befehle separat, direkt. Es ist umständlicher als zweistufiger Prozess und das Nachschlagen der Remote-Anmeldeinformationen, aber es würde die Arbeit erledigen. Die verlinkte Quelle im gen_pg_*_command Methoden zeigen, wie man pg_dump verwendet und pg_restore .