Jag skrev pg:pull
och pg:push
kommandon.
pg:pull
och pg:push
båda använder pg_dump
kommandot och skicka det direkt till pg_restore
(källkod). Tyvärr finns det problem med pg:push,pull
på Windows vid tidpunkten för detta svar, september 2014. Dessa problem är inte oöverstigliga, så om du kommer till det här svaret någon gång senare, kontrollera om det kan ha åtgärdats.
env
kommandot som används här och här tror jag inte är på Windows, det är därför du måste göra PGUSER och PGPASSWORD-grejer. Men orsaken till env
är det pg_dump
behöver andra miljövariabler än pg_restore
.
Jag tog ett hugg på att fixa det en gång, genom att använda popen för att ställa in kommandona oberoende, och sedan koppla ihop dem istället för att använda ett rör. Men jag kunde inte riktigt få det att fungera och var tvungen att sluta.
Jag skulle mycket gärna granska alla patchar som går hela vägen och fixa det här problemet, bara @ nämna mig på en pull-förfrågan till heroku/heroku-projektet.
Ursäkta att jag misslyckades med att åtgärda det här problemet :(
Istället, och tills detta är åtgärdat, kan du använda pg_dump
och pg_restore
kommandon separat, direkt. Det är mer besvärligt som en tvåstegsprocess och att behöva leta upp fjärrkontrolluppgifterna, men det skulle få jobbet gjort. Den länkade källan i gen_pg_*_command
metoder visar hur man använder pg_dump
och pg_restore
.