Скиньте базу даних (очистіть усі), після чого заведіть базу даних


159

Чи є команда рейка для видалення даних у таблицях бази даних?

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

Відповіді:


278

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


4
Побічна примітка до цього: якщо у виробництві, вам, можливо, доведеться перезапустити сервер рейки для появи змін / сторінок для оновлення.
етузм

160

Ви можете видалити все та відтворити базу даних + насіння обома:

  1. rake db:reset: вантажі з schema.rb
  2. rake db:drop db:create db:migrate db:seed: вантажі від міграцій

Переконайтеся, що у вас немає підключень до db (сервер рейлів, клієнт sql ..) або db не впаде.

schema.rb - це знімок поточного стану вашої бази даних, генерований:

rake db:schema:dump

Дякуємо, що нагадали людям вимкнути будь-які сервери, щоб переконатися, що БД належним чином випадає.
aardvarkk

6

Якщо вам не здається скинути і відтворити весь шебанг просто для перезавантаження своїх даних, ви можете використовувати 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

буде працювати так само добре


0

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

Після використання команди скидання вона зробить наступне: Видаліть базу даних: rake db:drop Завантажте схему: Завантажте rake db:schema:load дані:rake db:seed

Але якщо ви хочете повністю скинути свою базу даних, можете скористатися rake db:drop. Видалення бази даних також видалить будь-які конфлікти схеми або погані дані. Якщо ви хочете зберегти наявні дані, не забудьте створити резервну копію, перш ніж виконувати цю команду.

Це детальна стаття про найважливіші команди бази граблів .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.