Сбросить базу данных (очистить все), затем заполнить базу данных - PullRequest
153 голосов
/ 23 октября 2010

Существует ли команда rake для удаления данных из таблиц базы данных?

Как создать сценарий db: seed для предварительного заполнения данных в моих таблицах?

Ответы [ 5 ]

274 голосов
/ 23 октября 2010

Я использую rake db:reset, который удаляет, а затем воссоздает базу данных и включает ваш файл seed.rb http://guides.rubyonrails.org/migrations.html#resetting-the-database

158 голосов
/ 14 мая 2013

Вы можете удалить все и заново создать базу данных + семена с обоими:

  1. rake db:reset: загрузка из schema.rb
  2. rake db:drop db:create db:migrate db:seed: нагрузки от миграций

Убедитесь, что у вас нет соединений с БД (rails server, sql client ..), иначе БД не будет сброшена.

schema.rb - это снимок текущего состояния вашей базы данных, сгенерированный:

rake db:schema:dump
6 голосов
/ 05 марта 2016

Если вам не хочется отбрасывать и воссоздавать весь shebang просто для перезагрузки ваших данных, вы можете использовать MyModel.destroy_all (или delete_all) в файле seed.db, чтобы очистить таблицу перед вашим MyModel.create!(...)операторы загружают данные.Затем вы можете повторить операцию db:seed снова и снова.(Очевидно, что это влияет только на таблицы, в которые вы загрузили данные, а не на остальные.)

В "https://stackoverflow.com/a/14957893/4553442" есть "грязный хак" для добавления операции "удаления"похоже на миграцию вверх и вниз ...

3 голосов
/ 07 декабря 2017

Начиная с Rails 5, инструмент командной строки rake имеет псевдоним rails, поэтому теперь

rails db:reset вместо rake db:reset

будет работать так же хорошо

0 голосов
/ 29 марта 2018

Вы можете использовать rake db:reset, когда хотите удалить локальную базу данных и начать заново с данными, загруженными из db/seeds.rb.Это полезная команда, когда вы все еще разрабатываете свою схему, и вам часто нужно добавлять поля к существующим моделям.

После использования команды сброса будет выполнено следующее: Удалить базу данных: rake db:drop Загрузитьсхема: rake db:schema:load Заполните данные: rake db:seed

Но если вы хотите полностью удалить свою базу данных, вы можете использовать rake db:drop.Удаление базы данных также удалит любые конфликты схемы или неверные данные.Если вы хотите сохранить имеющиеся у вас данные, обязательно выполните их резервное копирование перед выполнением этой команды.

Это подробная статья о наиболее важных командах базы данных rake .

...