Ruby Rails bazasında təmiz və ya yenidən yaradın

Ruby-də Rails-də data dolu bir məlumat bazası var. Hər şeyi silmək və verilənlər bazasını bərpa etmək istəyirəm. Aşağıdakı kimi istifadə etməyi düşünürəm:

 rake db:recreate 

Mümkündürmü?

483
07 нояб. AnApprentice 07 Nov müəyyən. 2010-11-07 04:23 '10 saat 04:23 'da 2010-11-07 04:23
@ 17 cavab

Bunu etmək üçün iki yolu bilirəm:

Verilənlər bazasını sıfırlayacaq və mövcud sxeminizi yenidən bərpa edəcəkdir:

 rake db:reset db:migrate 

Bu, DB-i məhv və sonra yaratmaq və sonra mövcud şeması köçürmək:

 rake db:drop db:create db:migrate 

Bütün məlumatlar hər iki senaryoda da itəcək.

920
07 нояб. Cavab verilir s84 07 noyabr. 2010-11-07 04:40 '10 saat 04:40 'da 2010-11-07 04:40

Rails 4 sizə lazım olan hər şeyə malikdir.

 $ rake db:schema:load 
border=0

Bu verilənlər bazasının bütün məzmununu silmək və şemayı schema.rb faylından təkrarlayaraq bütün miqrasiyaları tək-tək tətbiq etməyəcəkdir.

137
20 янв. Cavab Eneko Alonso 20 Yanvar. 2014-01-20 07:09 '14 da 7:09 2014-01-20 07:09

Terminalda aşağıdakı terminaldan istifadə edirəm.

 rake db:drop  rake db:create  rake db:migrate  rake db:schema:dump  rake db:test:prepare 

Mən onu remigrate ad remigrate və onu remigrate

37
Cavab TK tərəfindən verilir . 07 Nov 2010-11-07 04:33 '10 at 4:33 2010-11-07 04:33

Yeniləmə: Rails 5-nin gəlməsi ilə bu əmr bu əmr ilə veriləcəkdir:

raylar db: təmizləmək db: yaradın db: məcburi RAILS_ENV = test


Dəmir yolu 4.2-in ən son versiyasından başlayaraq aşağıdakıları yerinə yetirə bilərsiniz:

 rake db:purge 

Mənbə: Təyin

 # 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 

Yuxarıda olduğu kimi birlikdə istifadə edilə bilər:

 rake db:purge db:create db:migrate RAILS_ENV=test 
27
02 янв. Cavab Robbie Guilfoyle tərəfindən verilir 02 Yanvar 2015-01-02 07:30 '15 saat 07:30 'da 2015-01-02 07:30

İstədiyinizdən asılı olaraq, istifadə edə bilərsiniz ...

rake db:create

... config/database.yml ilə sıfırdan bir verilənlər bazası yaratmaq ...

rake db:schema:load

... schema.rb faylından sıfırdan bir verilənlər bazası yaratmaq.

24
07 нояб. cavab 07 noyabr. 2010-11-07 04:29 '10 at 4:29 2010-11-07 04:29

Yalnız addımları edin: veritabanını buraxın, sonra yenidən yaradın, məlumatları köçürün və toxumunuz varsa, verilənlər bazasını doldurun:

 rake db:drop db:create db:migrate db:seed 

rake üçün mühüm mühit inkişaf olduğundan, xüsusi testlərdə bir istisna görürsəniz, sınaq mühiti üçün db-i aşağıdakı kimi yenidən yaratmalısınız:

 RAILS_ENV=test rake db:drop db:create db:migrate 

Çox hallarda test verilənlər bazası test prosedurları zamanı əkilir, belə ki, db:seed vəzifəsi tələb olunmur. Əks halda, məlumat bazasını hazırlamalısınız:

 rake db:test:prepare 

və ya

 RAILS_ENV=test rake db:seed 

Əlavə olaraq, təkrarlanan vəzifəni istifadə etmək üçün Rakefile-də aşağıdakı kodu əlavə edə bilərsiniz:

 namespace :db do task :recreate => [ :drop, :create, :migrate ] do if ENV[ 'RAILS_ENV' ] !~ /test|cucumber/ Rake::Task[ 'db:seed' ].invoke end end end 

Sonra da:

 rake db:recreate 
11
28 янв. Cavab Mal Skrylevə verildi 28 Yanvar 2014-01-28 10:46 '14 da 10:46 2014-01-28 10:46

Kimi istifadə edin

 rake db:drop db:create db:migrate db:seed 

Bütün bir xətt. Ətraf mühit yenidən və yenidən başlamadığı üçün daha sürətli.

db: drop - verilənlər bazasını ləğv edir.

db: yaratmaq - bir verilənlər bazası yaradacaq (host / db / parol config / database.yml'dan alınacaq)

db: migrate - (db / migration / .rb) * qovluğundan mövcud köçürmələri başla.

db: tohumdan başlanan tohum məlumatlarını kataloqdan (db / migration / seed.rb) ..

Mən adətən üstünlük verirəm:

 rake db:reset 

hər şeyi bir anda edək.

Hooray!

11
01 дек. Cavab Maniş Shrivastava 01 dekabrda verilir. 2014-12-01 13:52 '14 'da 13:52 2014-12-01 13:52

Komanda sorğusunda, işləyin

 rake db:migrate:reset 
9
25 нояб. 25 noyabr tarixində user2747051 tərəfindən verilmiş cavab 2013-11-25 15:58 '13 at 15:58 2013-11-25 15:58

Bunu əl ilə edə bilərsiniz:

 rake db:drop rake db:create rake db:migrate 

Yoxsa yuxarıda göstərilən addımları yerinə yetirəcək rake db:reset , həm də db/seeds.rb çalıştırın.

Əlavə nüans ki, rake db:reset doğrudan schema.rb faylından yüklənir və bütün miqrasiya faylları yenidən schema.rb .

Bütün hallarda məlumat silinir.

7
14 окт. Erik Trautman tərəfindən verilmiş cavab 14 oktyabr. 2013-10-14 05:19 '13 at 5:19 2013-10-14 05:19

Aşağıdakı komanda xəttindən istifadə edə bilərsiniz:

 rake db:drop db:create db:migrate db:seed db:test:clone 
6
30 янв. istifadəçi1358180 tərəfindən verilmiş cavab 30 yanvar 2013-01-30 18:18 '13 'da 18:18' də 2013-01-30 18:18

Xüsusi bir verilənlər bazasını çıxarmaq üçün bunu relslər konsolunda edə bilərsiniz:

 $rails console Loading development environment 1.9.3 > ActiveRecord::Migration.drop_table(:<table_name>) 1.9.3 > exit 

Və yenidən DB yenidən yapılandırın.

 $bundle exec rake db:migrate 
4
06 нояб. Cavab 06 noyabr Kuş verilir. 2013-11-06 13:44 '13 at 13:44 2013-11-06 13:44

Dəmir yolu 4.2-də, bütün məlumatları silin, lakin məlumat bazasını saxlayır

 $ bin/rake db:purge  bin/rake db:schema:load 

https://github.com/rails/rails/blob/4-2-stable/activerecord/CHANGELOG.md

4
08 апр. Cavab verilir Daha 08 apr. 2015-04-08 09:48 '15 at 9:48 2015-04-08 09:48

db:reset - db: drop və db: quraşdırma və ya db:migrate:reset - db: drop, db: yaratmaq və db: migrate edir.

Siz istifadə etmək istədiyinizdən asılıdır, schema.rb mövcuddur

3
06 апр. Cavab Aleksandr Babak tərəfindən verilir 06 apr. 2017-04-06 05:26 '17 də 5:26 2017-04-06 05:26

Rails təlimatına əsasən, bu bir liner istifadə olunmalıdır, çünki schema.rb yüklənəcəkdir, çünki schema.rb yüklənmə faylları yenidən yüklənir:

 rake db:reset 
2
01 окт. Cavab Victor 01 oktyabr verilir . 2013-10-01 11:10 '13 at 11:10 2013-10-01 11:10

Mən bu əmri yerinə yetirmək üçün ən yaxşı yolu hesab edirəm:

 **rake db:reset** it does db:drop, db:setup rake db:setup does db:create, db:schema:load, db:seed 
1
19 апр. Cavab 19 Martda Thorin tərəfindən verilir 2016-04-19 10:37 '16 'da 10:37' də 2016-04-19 10:37 'də

İnkişaf etdiyimizdən bəri həmişə verilənlər bazasını yenidən yaratmaq istəyirsən, lib / vəzifələr qovluğunda rake tapşırığını təyin edə bilərsiniz.

  namespace :db do task :all => [:environment, :drop, :create, :migrate] do end end 

və çalıştırdığınız terminalda

 rake db:all 

veritabanınızı bərpa edəcəkdir

1
25 июля '15 в 21:45 2015-07-25 21:45 Cavab Obed Lorisson tərəfindən 25 iyul 'da 21:45' də verildi 2015-07-25 21:45

Bu gün mənim relsli sxemdə bir neçə dəyişiklik etmişəm. Mən hiyerarşidə daha iki modelə ehtiyac duyduğumu və bəzi digərləri silmək üçün lazım olduğunu başa düşdüm. Modellər və nəzarətçilər üçün çox az dəyişikliklər oldu.

Mən iki yeni model əlavə etdim və bunları istifadə edərək yaratdım:

 rake db:migrate 

Sonra schema.rb faylını düzəldirdim. Mən artıq lazım olan köhnə modelləri əllə sildim, xarici əsas sahəni lazımınca dəyişdirdim və mənim üçün aydınlaşdırmaq üçün əmri bir az dəyişdi. Bütün migrasyonları sildim və sonra yenidən qurmağa başladıq:

 rake db:reset 

Böyük iş gördü. Əlbəttə ki, bütün məlumatlar yenidən yüklənməlidir. Rails, göçlərin qaldırıldığını və yüksək su sıfırlama işarəsini gördü:

 -- assume_migrated_upto_version(20121026094813, ["/Users/sean/rails/f4/db/migrate"]) 
0
26 окт. 26 aylıq bir cavab verildi . 2012-10-26 14:12 '12 at 2:12 pm 2012-10-26 14:12