Сбросить базу данных (очистить все), а затем заполнить базу данных
есть ли команда rake для уничтожения данных в таблицах базы данных?
Как создать сценарий db: seed для предварительного заполнения данных в мои таблицы?
5 ответов:
Я использую
rake db:reset
падает, а затем воссоздает базу данных и включает в себя ваши семена.rb файл. http://guides.rubyonrails.org/migrations.html#resetting-the-database
вы можете удалить все и воссоздать базу данных + семена с обоими:
rake db:reset
: загрузка из схемы.РБrake db:drop db:create db:migrate db:seed
: нагрузки от миграцийубедитесь, что у вас нет подключения к БД (rails server, sql client..) или БД не упадет.
- схемы.rb-это снимок текущего состояния вашей базы данных, созданный с помощью:
rake db:schema:dump
если вы не хотите сбрасывать и воссоздавать весь shebang только для перезагрузки данных, вы можете использовать
MyModel.destroy_all
(илиdelete_all
) в семени.db файл для очистки таблицы перед вашимMyModel.create!(...)
операторы загружают данные. Затем вы можете повторитьdb:seed
операцию снова и снова. (Очевидно, что это влияет только на таблицы, в которые вы загрузили данные, а не на остальные.)есть "грязный хак" в https://stackoverflow.com/a/14957893/4553442 чтобы добавить a операция "высева" аналогична миграции вверх и вниз...
по состоянию на рельсы 5,
rake
инструмент командной строки был сглажен какrails
теперь
rails db:reset
вместоrake db:reset
будет работать так же хорошо
можно использовать
rake db:reset
когда вы хотите удалить локальную базу данных и начать с чистого листа с данными, загруженными изdb/seeds.rb
. Это полезная команда, когда вы все еще выясняете свою схему, и часто нужно добавлять поля в существующие модели.после того, как команда сброса используется он будет делать следующее: Отбросьте базу данных:
rake db:drop
Загрузите схему:rake db:schema:load
Посевные данные:rake db:seed
но если вы хотите полностью удалить свою базу данных, вы можете использовать
rake db:drop
. Отбрасывание база данных также удалит любые конфликты схемы или плохие данные. Если вы хотите сохранить имеющиеся данные, обязательно создайте их резервную копию перед выполнением этой команды.это подробная статья о самом важном грабли базы данных команд.