Czyszczenie lub odtworzenie bazy danych Ruby on Rails
Mam bazę danych dev Ruby on Rails pełną danych. Chcę wszystko usunąć i odbudować bazę danych. Myślę o użyciu czegoś w rodzaju:
rake db:recreate
Czy to możliwe? 18 answers
Znam dwa sposoby na to:
Spowoduje to zresetowanie bazy danych i ponowne wczytanie bieżącego schematu za pomocą all:
rake db:reset db:migrate
To zniszczy twój db, a następnie utworzy go, a następnie przeniesie bieżący schemat:
rake db:drop db:create db:migrate
Wszystkie dane zostaną utracone w obu scenariuszach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-04 02:13:52
On Rails 4, all needed is
$ rake db:schema:load
To usunie całą zawartość Twojego DB i odtworzy schemat z twojego schematu.plik rb, bez konieczności stosowania wszystkich migracji jeden po drugim.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-20 04:09:55
Używam poniższej liniowej w Terminalu.
$ rake db:drop && rake db:create && rake db:migrate && rake db:schema:dump && rake db:test:prepare
Umieściłem to jako alias powłoki i nadałem mu nazwę remigrate
Już Teraz możesz łatwo "łańcuchować" szyny zadania:
$ 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+
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-26 14:50:06
Update: wraz z pojawieniem się Rails 5, to polecenie będzie dostępne za pomocą tego polecenia:
Rails db:purge db:create db:migrate RAILS_ENV=test
Od najnowszego wydania rails 4.2 możesz teraz uruchomić:
rake db:purge
Source: commit
# 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
Może być używany razem, jak wspomniano powyżej:
rake db:purge db:create db:migrate RAILS_ENV=test
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-04 17:09:23
W zależności od tego, czego chcesz, możesz użyć...
rake db:create
... Aby zbudować bazę danych od zera z config/database.yml
, lub ...
rake db:schema:load
...Aby zbudować bazę danych od podstaw z Twojego pliku schema.rb
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-07 01:29:48
Po prostu wykonaj sekwencję kroków: upuść bazę danych, następnie ponownie ją Utwórz, zmigruj dane, a jeśli masz nasiona, zasiej bazę danych:
rake db:drop db:create db:migrate db:seed
Ponieważ domyślnym środowiskiem dla rake
jest development , jeśli widzisz wyjątek w spec testach, powinieneś ponownie utworzyć db dla środowiska test w następujący sposób:
RAILS_ENV=test rake db:drop db:create db:migrate
W większości przypadków baza danych testów jest wysiewana podczas procedur testowych, więc db:seed
akcja zadania nie musi być przekazywana. W przeciwnym razie należy przygotować bazę danych:
rake db:test:prepare
Lub
RAILS_ENV=test rake db:seed
Dodatkowo, aby użyć zadania recreate możesz dodać do Rakefile następujący kod:
namespace :db do
task :recreate => [ :drop, :create, :migrate ] do
if ENV[ 'RAILS_ENV' ] !~ /test|cucumber/
Rake::Task[ 'db:seed' ].invoke
end
end
end
Następnie wydanie:
rake db:recreate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-28 07:52:52
Z linii poleceń uruchom
rake db:migrate:reset
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-24 23:19:41
Użyj jak
rake db:drop db:create db:migrate db:seed
Wszystko w jednej linii. Jest to szybsze, ponieważ środowisko nie jest przeładowywane ponownie i ponownie.
Db: drop - usunie bazę danych.
Db: create - utworzy bazę danych (host / db / password zostanie pobrany z config/database.yml)
Db: migrate - uruchomi istniejące migracje z katalogu (db/migration/.rb)*.
Db: seed - uruchomi seed data z katalogu (db / migration / seed.rb) ..
Ja zwykle wolę:
rake db:reset
Zrobić wszystko na raz.
Zdrówko!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-20 07:24:44
Możesz zrobić ręcznie:
rake db:drop
rake db:create
rake db:migrate
Lub po prostu rake db:reset
, który uruchomi powyższe kroki, ale również uruchomi Twój plik db/seeds.rb
.
Dodanym niuansem jest to, że rake db:reset
ładuje się bezpośrednio z pliku schema.rb
, a nie uruchamia ponownie wszystkie pliki migracji.
Twoje dane są zdumione we wszystkich przypadkach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-14 02:19:52
Możesz użyć następującego wiersza poleceń:
rake db:drop db:create db:migrate db:seed db:test:clone
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-14 12:51:35
Aby upuścić konkretną bazę danych, możesz to zrobić na konsoli rails:
$rails console
Loading development environment
1.9.3 > ActiveRecord::Migration.drop_table(:<table_name>)
1.9.3 > exit
A następnie ponownie migrować DB
$bundle exec rake db:migrate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-06 10:44:01
On rails 4.2, aby usunąć wszystkie dane, ale zachować bazę danych
$ bin/rake db:purge && bin/rake db:schema:load
Https://github.com/rails/rails/blob/4-2-stable/activerecord/CHANGELOG.md
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-06 13:18:04
Możesz użyć
db:reset
- dla run db: drop i db: setup lub
db:migrate:reset
- która uruchamia db: drop, db: create oraz db: migrate.
Dependent at you want to use exist schema.rb
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-06 02:26:03
Zgodnie z rails guide , ten jeden liner powinien być używany, ponieważ ładowałby się z schema.rb
zamiast przeładowywać pliki migracji jeden po drugim:
rake db:reset
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-01 08:10:51
Ponieważ w rozwoju zawsze będziesz chciał odtworzyć bazę danych, możesz zdefiniować zadanie rake w folderze lib/tasks w ten sposób.
namespace :db do
task :all => [:environment, :drop, :create, :migrate] do
end
end
I w terminalu uruchomisz
rake db:all
Odbuduje twoją bazę danych
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-25 18:45:27
Myślę, że najlepszym sposobem na uruchomienie tej komendy jest:
**rake db:reset** it does db:drop, db:setup
rake db:setup does db:create, db:schema:load, db:seed
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-19 07:37:07
Simply you can run
rake db:setup
Usunie bazę danych, utworzy nową bazę danych i wypełni bazę danych z pliku seed, jeśli utworzyłeś plik seed pewnymi danymi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-27 09:47:49
Wprowadziłem dzisiaj sporo zmian w moim schemacie rails. Zdałem sobie sprawę, że potrzebuję dodatkowych dwóch modeli w hierarchii, a kilka innych do usunięcia. W modelach i kontrolerach wprowadzono wiele niewielkich zmian.
Dodałem dwa nowe modele i stworzyłem je, używając:
rake db:migrate
Potem edytowałem schemat.plik rb. Ręcznie usunąłem stare modele, które nie były już wymagane, zmieniłem pole klucza obcego zgodnie z wymaganiami i po prostu zmieniłem nieco kolejność, aby było jaśniejsze ja. I usunięte wszystkie Migracje, a następnie ponownie uruchomić kompilację poprzez:
rake db:reset
Zadziałało idealnie. Oczywiście wszystkie dane muszą być przeładowane. Rails zorientowali się, że migracje zostały usunięte i zresetowali znak high-water:
-- assume_migrated_upto_version(20121026094813, ["/Users/sean/rails/f4/db/migrate"])
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-26 11:12:32