Сбросить базу данных (очистить все), затем заполнить базу данных

159

Есть ли команда rake, чтобы уничтожить данные в таблицах базы данных?

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

Бланкмэн
источник

Ответы:

278

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

JackCA
источник
4
Дополнительное примечание к этому: если вы работаете в Production, вам может потребоваться перезапустить сервер rails, чтобы отобразились изменения / страницы для обновления.
etusm 13.12.14
160

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

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

Убедитесь, что у вас нет подключений к db (rails server, sql client ..), иначе db не будет сброшен.

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

rake db:schema:dump
laffuste
источник
Спасибо за напоминание людям о необходимости выключения любых серверов, чтобы убедиться, что БД сброшена правильно.
aardvarkk
6

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

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

Том Хандт
источник
умный, воссоздавая все с нуля, каждый раз для меня
тянулось
5

Начиная с Rails 5, rakeинструмент командной строки был добавлен как railsсейчас

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

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

DazBaldwin
источник
0

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

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

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

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

Неша Зорич
источник