Очистите или заново создайте базу данных Ruby on Rails

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

rake db:recreate

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

+550
07 нояб. '10 в 1:23
источник поделиться
19 ответов

Я знаю два способа сделать это:

Это будет reset ваша база данных и перезагрузит вашу текущую схему всеми:

rake db:reset db:migrate

Это уничтожит ваш db, а затем создаст его, а затем перенесет вашу текущую схему:

rake db:drop db:create db:migrate

Все данные будут потеряны в обоих сценариях.

+1023
07 нояб. '10 в 1:40
источник

Связанные вопросы


Похожие вопросы

В Rails 4 все необходимое

$ rake db:schema:load

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

+150
20 янв. '14 в 4:09
источник

Я использую следующий вкладыш в Терминале.

$ rake db:drop && rake db:create && rake db:migrate && rake db:schema:dump && rake db:test:prepare

Я поместил это как псевдоним оболочки и назвал его remigrate

К настоящему времени вы можете легко "связать" задачи Rails:

$ rake db:drop db:create db:migrate db:schema:dump db:test:prepare # db:test:prepare no longer available since Rails 4.1.0.rc1+
+42
07 нояб. '10 в 1:33
источник

Обновление: в Rails 5 эта команда будет доступна через эту команду:

rails db:purge db:create db:migrate RAILS_ENV=test


Начиная с новейшей версии rails 4.2, вы можете запустить:

rake db:purge 

Источник: коммит

# desc "Empty the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop all databases in the config). Without RAILS_ENV it defaults to purging the development and test databases."
  task :purge => [:load_config] do
    ActiveRecord::Tasks::DatabaseTasks.purge_current
  end

Его можно использовать вместе, как указано выше:

rake db:purge db:create db:migrate RAILS_ENV=test
+35
02 янв. '15 в 4:30
источник

В зависимости от того, что вы хотите, вы можете использовать...

rake db:create

... для создания базы данных с нуля с config/database.yml или...

rake db:schema:load

... для создания базы данных с нуля из вашего файла schema.rb.

+28
07 нояб. '10 в 1:29
источник

В командной строке выполните

rake db:migrate:reset
+11
25 нояб. '13 в 12:58
источник

Использовать как

rake db:drop db:create db:migrate db:seed

Все в одной строке. Это происходит быстрее, так как среда не перезагружается снова и снова.

db: drop - отбросит базу данных.

db: create - создаст базу данных (host/db/password будут взяты из config/database.yml)

db: migrate - запустит существующие миграции из каталога (db/migration/.rb) *.

db: seed - запустит данные семян из каталога (db/migration/seed.rb)..

Я обычно предпочитаю:

rake db:reset

сделать все сразу.

Ура!

+11
01 дек. '14 в 10:52
источник

Просто выполните последовательность шагов: отбросьте базу данных, затем заново создайте ее, перенесите данные и, если у вас есть семена, заселите базу данных:

rake db:drop db:create db:migrate db:seed

Поскольку среда по умолчанию для rake - это разработка, в случае, если вы видите исключение в тестах spec, вы должны повторно создать db для тестовой среды следующим образом:

RAILS_ENV=test rake db:drop db:create db:migrate

В большинстве случаев тестовая база данных посеяна во время тестовых процедур, поэтому выполнение задачи db:seed не требуется. В противном случае вы должны подготовить базу данных:

rake db:test:prepare

или

RAILS_ENV=test rake db:seed

Кроме того, чтобы использовать задачу rereate, вы можете добавить в Rakefile следующий код:

namespace :db do
   task :recreate => [ :drop, :create, :migrate ] do
      if ENV[ 'RAILS_ENV' ] !~ /test|cucumber/
         Rake::Task[ 'db:seed' ].invoke
      end
   end
end

Затем выполните:

rake db:recreate
+11
28 янв. '14 в 7:46
источник

Вы можете сделать вручную:

rake db:drop
rake db:create
rake db:migrate

Или просто rake db:reset, который выполнит вышеуказанные шаги, но также запустит ваш файл db/seeds.rb.

Добавленный нюанс заключается в том, что rake db:reset загружается непосредственно из вашего файла schema.rb, а не снова запускает все файлы миграции.

Данные удаляются во всех случаях.

+8
14 окт. '13 в 2:19
источник

Вы можете использовать следующую командную строку:

rake db:drop db:create db:migrate db:seed db:test:clone
+6
30 янв. '13 в 15:18
источник

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

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

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

+4
08 апр. '15 в 6:48
источник

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

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

И затем снова перенастройте DB

$bundle exec rake db:migrate 
+4
06 нояб. '13 в 10:44
источник

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

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

+3
06 апр. '17 в 2:26
источник

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

rake db:reset
+2
01 окт. '13 в 8:10
источник

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

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

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

rake db:all

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

+1
25 июл. '15 в 18:45
источник

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

**rake db:reset** it does db:drop, db:setup
 rake db:setup does db:create, db:schema:load, db:seed
+1
19 апр. '16 в 7:37
источник

Просто ты можешь бежать

rake db:setup

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

+1
27 июн. '18 в 9:47
источник

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

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

rake db:migrate

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

rake db:reset

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

-- assume_migrated_upto_version(20121026094813, ["/Users/sean/rails/f4/db/migrate"])
0
26 окт. '12 в 11:12
источник

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.
0
14 июн. '19 в 12:40
источник

Посмотрите другие вопросы по меткам или Задайте вопрос