Очистить или восстановить базу данных Ruby on Rails - PullRequest
553 голосов
/ 07 ноября 2010

У меня есть база данных dev Ruby on Rails, полная данных. Я хочу удалить все и восстановить базу данных. Я подумываю использовать что-то вроде:

rake db:recreate

Возможно ли это?

Ответы [ 19 ]

4 голосов
/ 08 апреля 2015

На рельсах 4.2, чтобы удалить все данные, но сохранить базу данных

$ bin/rake db:purge && bin/rake db:schema:load

https://github.com/rails/rails/blob/4-2-stable/activerecord/CHANGELOG.md

4 голосов
/ 06 ноября 2013

Чтобы удалить конкретную базу данных, вы можете сделать это на консоли rails:

$rails console
Loading development environment
1.9.3 > ActiveRecord::Migration.drop_table(:<table_name>)
1.9.3 > exit

, а затем снова перенести базу данных

$bundle exec rake db:migrate 
3 голосов
/ 06 апреля 2017

Вы можете использовать db:reset - для запуска db: drop и db: setup или db:migrate:reset - для запуска db: drop, db: create и db: migrate.

зависит от того, что вы хотите использоватьсуществует schema.rb

2 голосов
/ 01 октября 2013

Согласно Руководству по Rails , этот один вкладыш следует использовать, поскольку он будет загружаться из schema.rb вместо перезагрузки файлов миграции один за другим:

rake db:reset
1 голос
/ 14 июня 2019

3 варианта, тот же результат:

1. Все шаги:

  $ rake db:drop           # deletes the database for the current env
  $ rake db:create         # creates the database for the current env
  $ rake db:schema:load    # loads the schema already generated from schema.rb / erases data
  $ rake db:seed           # seed with initial data

2. Сброс:

  $ rake db:reset          # drop / schema:load / seed

3. Миграция: сброс:

  $ rake db:migrate:reset  # drop / create / migrate
  $ rake db:seed

Примечания:

  • Если схема: загрузка используется быстреечем делать все миграции, но результат тот же.
  • Все данные будут потеряны.
  • Вы можете запустить несколько граблей в одной строке.
  • Работает с рельсами 3.
1 голос
/ 27 июня 2018

Просто вы можете запустить

rake db:setup

Это приведет к удалению базы данных, созданию новой базы данных и заполнению базы данных из семени, если вы создали файл семени с некоторыми данными.

1 голос
/ 19 апреля 2016

Я думаю, что лучший способ выполнить эту команду:

**rake db:reset** it does db:drop, db:setup
 rake db:setup does db:create, db:schema:load, db:seed
1 голос
/ 25 июля 2015

Поскольку при разработке вы всегда захотите воссоздать базу данных, вы можете определить задачу rake в своей папке lib / tasks следующим образом.

  namespace :db do
      task :all => [:environment, :drop, :create, :migrate] do
   end 
end

и в терминале вы запустите

rake db:all

, это восстановит вашу базу данных

0 голосов
/ 26 октября 2012

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

Я добавил две новые модели и создал их, используя:

rake db:migrate

Затем отредактировал файл schema.rb.Я вручную удалил старые модели, которые больше не нужны, изменил поле внешнего ключа по мере необходимости и просто переупорядочил его, чтобы сделать его более понятным для меня.Я удалил все миграции, а затем повторно запустил сборку с помощью:

rake db:reset

Она работала отлично.Все данные должны быть перезагружены, конечно.Рельсы поняли, что миграции были удалены, и сбросили верхнюю отметку:

-- assume_migrated_upto_version(20121026094813, ["/Users/sean/rails/f4/db/migrate"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...