2014-09-16 3 views
3

Итак, я прочитал documentation на pg:pull, но, похоже, не может заставить его работать. Когда я запускаю команду с правильными параметрами, извлекается моя БД Heroku и создается локальная база данных, но схема не заполняется локально; например, не создаются таблицы, Триггеры не устанавливаются, никаких ограничений, никаких данных и т.д.Heroku pg: pull не удалось заполнить схему

Вот heroku pg:info журнал для моей базы данных:

=== HEROKU_POSTGRESQL_ORANGE_URL (DATABASE_URL) 
Plan:  Hobby-dev 
Status:  Available 
Connections: 1 
PG Version: 9.3.3 
Created:  2014-04-02 19:24 UTC 
Data Size: 7.4 MB 
Tables:  6 
Rows:  1376/10000 (In compliance) 
Fork/Follow: Unsupported 
Rollback: Unsupported 

Вот команда, которую я использую:

PGUSER=postgres PGPASSWORD=password heroku pg:pull HEROKU_POSTGRESQL_ORANGE mylocaldb --app myappname

Я не мог понять, как установить переменные окружения для PGUSERPGPASSWORD и (если кто-то может мне точку в правильном направлении, там, вы получите +1. Я прочитал this question и ответ безрезультатно).

mylocaldb создан, но схема не заполняется

Вот pg_dump раз команда была запущена:.

pg_dump: reading schemas 
pg_dump: reading user-defined tables 
pg_dump: reading extensions 
pg_dump: reading user-defined functions 
pg_dump: reading user-defined types 
pg_dump: reading procedural languages 
pg_dump: reading user-defined aggregate functions 
pg_dump: reading user-defined operators 
pg_dump: reading user-defined operator classes 
pg_dump: reading user-defined operator families 
pg_dump: reading user-defined text search parsers 
pg_dump: reading user-defined text search templates 
pg_dump: reading user-defined text search dictionaries 
pg_dump: reading user-defined text search configurations 
pg_dump: reading user-defined foreign-data wrappers 
pg_dump: reading user-defined foreign servers 
pg_dump: reading default privileges 
pg_dump: reading user-defined collations 
pg_dump: reading user-defined conversions 
pg_dump: reading type casts 
pg_dump: reading table inheritance information 
pg_dump: reading event triggers 
pg_dump: finding extension members 
pg_dump: finding inheritance relationships 
pg_dump: reading column info for interesting tables 
pg_dump: finding the columns and types of table "phrases" 
pg_dump: finding default expressions of table "phrases" 
pg_dump: finding the columns and types of table "users" 
pg_dump: finding default expressions of table "users" 
pg_dump: finding the columns and types of table "favorite_phrases" 
pg_dump: finding the columns and types of table "favorite_users" 
pg_dump: finding the columns and types of table "phrasebooks" 
pg_dump: finding default expressions of table "phrasebooks" 
pg_dump: finding the columns and types of table "phrasebooks_phrases" 
pg_dump: flagging inherited columns in subtables 
pg_dump: reading indexes 
pg_dump: reading indexes for table "phrases" 
pg_dump: reading indexes for table "users" 
pg_dump: reading indexes for table "favorite_phrases" 
pg_dump: reading indexes for table "favorite_users" 
pg_dump: reading indexes for table "phrasebooks" 
pg_dump: reading indexes for table "phrasebooks_phrases" 
pg_dump: reading constraints 
pg_dump: reading foreign key constraints for table "phrases" 
pg_dump: reading foreign key constraints for table "users" 
pg_dump: reading foreign key constraints for table "favorite_phrases" 
pg_dump: reading foreign key constraints for table "favorite_users" 
pg_dump: reading foreign key constraints for table "phrasebooks" 
pg_dump: reading triggers 
pg_dump: reading triggers for table "phrases" 
pg_dump: reading triggers for table "users" 
pg_dump: reading triggers for table "favorite_phrases" 
pg_dump: reading triggers for table "favorite_users" 
pg_dump: reading triggers for table "phrasebooks" 
pg_dump: reading rewrite rules 
pg_dump: reading large objects 
pg_dump: reading dependency data 
pg_dump: saving encoding = UTF8 
pg_dump: saving standard_conforming_strings = on 
pg_dump: saving database definition 
pg_restore: [archiver] did not find magic string in file header 
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte 
ll used 
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte 
ll used 
pg_dump: dumping contents of table favorite_phrases 
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte 
ll used 
pg_dump: dumping contents of table favorite_users 
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte 
ll used 
pg_dump: dumping contents of table phrasebooks 
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte 
ll used 
pg_dump: dumping contents of table phrasebooks_phrases 
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte 
ll used 
pg_dump: dumping contents of table phrases 
pg_dump: [custom archiver] could not write to output file: Invalid argument 

Есть ли какой-то дополнительной конфигурации, что мне нужно сделать на местном уровне для этого работать? Если это имеет значение, я использую пользовательский словарь стоп-слова для tsquery, который не настроен локально (пока) на этой машине ... Я сомневаюсь, что это было бы проблемой в pg_dump, хотя ... Любая помощь очень ценится !

Редактировать: Я просто попробовал запустить эту команду на своем рабочем столе, на другой локальной станции, у которой все настроено. Нет костей. Я получаю точно такие же результаты. Ниже приводится вывод which psql на указанной локальной машине, на всякий случай:

$ which psql 
/c/Program Files/PostgreSQL/9.3/bin/psql 

ответ

8

я написал команды pg:pull и pg:push.

pg:pullpg:push и оба используют pg_dump команду и трубы, которые непосредственно pg_restore (source code). К сожалению, есть проблемы с pg:push,pull на окнах на момент ответа, сентябрь 2014 года. Эти проблемы не являются непреодолимыми, поэтому, если вы придете к этому ответу через некоторое время, пожалуйста, проверьте, не было ли это исправлено.

Команда envused here и here Я не думаю, что на окнах, поэтому вы испытываете сделать PGUSER и PGPASSWORD вещи. Однако причиной для env является то, что pg_dump нужны разные переменные среды, чем pg_restore.

Я взял a stab at fixing that один раз, используя popen для самостоятельного конфигурирования команд, затем проводя их вместе вместо использования трубы. Однако я не мог заставить его работать и должен был остановиться.

Я был бы очень рад рассмотреть любые исправления, которые пройдут весь путь, и исправить эту проблему, просто @ упомяните меня по запросу на проект heroku/heroku.

Извините за мои не в состоянии решить эту проблему :(

Вместо этого, и пока это не будет устранено, вы можете использовать команды pg_dump и pg_restore отдельно, непосредственно. Это более громоздкое, как 2 шага процесс и необходимость искать удаленные учетные данные, но это будет получить работу. связанный источник в gen_pg_*_command методы показывают, как использовать pg_dump и pg_restore.

+0

Воля, спасибо за ваш ответ! Я посмотрю на попытку снова с помощью команд напрямую. К сожалению, я не слишком хорошо знаком с Ruby ... только использовал его в течение нескольких недель в университетском курсе, иначе я бы попытался настроить исправление для Windows. Пожалуйста, отправьте сообщение, если/когда исправление сделано :) –

+3

Прошло уже больше года, теперь оно исправлено? – Saheed

+0

Эта проблема по-прежнему существует в Windows 7, но, похоже, сработает команда 'pg_dump'; не нужно было использовать 'pg_restore', так как я сбросил все команды SQL в текстовый файл. –

0

ответ @will идеально подходит в случае регулярного развития Heroku, но не в случае Частного пространства. Как указано в Heroku Postgres and Heroku Private Spaces :: External connections:

В отличие от баз данных Heroku Postgres в наших кружках, стандартных и премиальных уровней, частные базы данных не могут быть доступны через локальный компьютер.

В качестве обходного пути вы можете дублировать БД на не-частную БД, а затем вы можете сбросить базу данных на ваш локальный компьютер.

Смежные вопросы