Как создать резервную копию/восстановление Rails db с помощью Postgres?
Я делаю следующее на своем сервере:
pg_dump -O -c register_production > register.sql
Затем, после копирования register.sql в мою локальную среду, я пытаюсь:
psql register_development < register.sql
Это работает, но когда я пытаюсь запустить локальный сайт Rails, я получаю следующее:
PG::UndefinedTable: ERROR: relation "list_items" does not exist at character 28
Как я могу восстановить все (включая отношения) с сервера db на локальный dev db?
Ответы
Ответ 1
Я использую эту команду для сохранения моей базы данных:
pg_dump -F c -v -U postgres -h localhost <database_name> -f /tmp/<filename>.psql
И это, чтобы восстановить его:
pg_restore -c -C -F c -v -U postgres /tmp/<filename>.psql
Это выгружает базу данных в пользовательском формате Postgres (-F c
), который по умолчанию сжимается и позволяет переупорядочить его содержимое. -C -c
будет отбрасывать базу данных, если она уже существует, а затем воссоздать ее, полезную в вашем случае. И -v
указывает подробные данные, чтобы вы могли точно видеть, что происходит, когда это происходит.
Ответ 2
Существует ли база данных register_development перед запуском команды psql
? Потому что эта форма не создаст его для вас.
Подробнее см. http://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE.