Как создать резервную копию/восстановление 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 указывает подробные данные, чтобы вы могли точно видеть, что происходит, когда это происходит.