Rails — импорт производственной базы данных Postgres в локальную базу данных разработки

#ruby-on-rails #postgresql

#ruby-on-rails #postgresql

Вопрос:

У меня есть дамп базы данных с именем dump.sql из производственной базы данных, и когда я пытаюсь импортировать его в свою локальную базу данных разработки, я получаю сообщение об ошибке

 ERROR:  role "petdoctors_prod" does not exist
connect: FATAL:  database "petdoctors_prod" does not exist
  

Похоже, что имя производственной базы данных — petdoctors_prod а моя локальная база данных разработки называется petdoctors_development . Можно ли импортировать prod DB в dev?

Каков наилучший способ выгрузки базы данных из prod?

Ответ №1:

Следующие шаги должны помочь в импорте dump.sql на ваш локальный компьютер:

  1. Запустите rake db:drop с вашего локального компьютера, чтобы удалить существующую базу данных
  2. Выполнить rake db:create . Это создаст базу данных, указанную в вашем database.yml файле, в соответствии со средой. В этом случае это создало бы базу данных под названием petdoctors_development
  3. Импортируйте дамп в petdoctors_development . Этот синтаксис этого шага будет варьироваться в зависимости от используемой вами базы данных. Например, для импорта дампа в PostgreSQL мы используем psql <db_name> < <Path to dump file>
  4. Запустите rake db:migrate , чтобы выполнить все миграции в вашем приложении

После публикации этого приложение будет запущено в процессе разработки с теми же данными, что и в дампе, взятом из рабочей среды.

Комментарии:

1. Это то, что я сделал, как упоминалось в моем вопросе. psql -U postgres petdoctors_development < ../dump.sql выдает указанную выше ошибку.

2. Вы уверены, что база данных была создана с использованием rake db:create ? Что происходит при вводе psql petdoctors_development в терминале?

3. Да, я только что сделал это снова. Когда я это делаю psql petdoctors_development , я регистрируюсь в базе данных psql petdoctors_development

4. psql petdoctors_development < ../dump.sql Работает? Обычно выполнение команды с упоминанием пользователя приводит к ошибке и на моем компьютере, поскольку postgres пользователь по умолчанию не имеет разрешений на доступ к базам данных моего приложения Rails.