Rake db arasında fərq: db: köçmək db: sıfırlama və db: şeması: yük

rake db:migraterake db:reset arasındakı fərq mənim başımda olduqca sadədir. rake db:schema:load əvvəlki iki fərqlənir necə başa düşmürəm.

Eyni səhifədə olduğumdan əmin olmaq üçün:

  • rake db:migrate - Hələ başlanmayan miqrasiya həyata keçirir.
  • rake db:reset - veritabanını təmizləyir (ehtimal ki, rake db:drop + rake db:create + rake db:migrate ) və yeni məlumat bazasında köçürməni başladır.

Mənim anlayışım yanlış getdi, əgər aydınlaşdırmaq kömək edin.

476
24 апр. Gaurav Agarwal tərəfindən təyin olunan 24 apr. 2012-04-24 19:11 '12 at 7:11 PM 2012-04-24 19:11
@ 4 cavab
  • db: migrate hələ işləməyən (tək) miqrasiyalardan başlayır.
  • db: bir verilənlər bazası yaradır
  • db: drop verilənlər bazasını çıxarır
  • db: schema: yük schema.rb sonra bir mövcud veritabanında masalar və sütun yaradır

  • db: quraşdırma db: yaratmaq, db: schema: load, db: seed

  • db: sıfırlama db: drop, db: quraşdırma edir

Bir qayda olaraq, yeni köç faylları vasitəsilə şemada dəyişikliklər etdikdən sonra db: migrate istifadə etməlisiniz (bu verilənlər bazasında artıq data olduqda yalnız əhəmiyyətlidir). db: schema: yük tətbiqi yeni bir instansiya qurarkən istifadə olunur.

Ümid edirəm ki, bu kömək edir.


Rails üçün yenilənməsi 3.2.12:

Mən yalnız qaynağı yoxladım və indi də bağlılıqlar var:

  • db: cari env üçün bir verilənlər bazası yaradır
  • db: yaratmaq: hamısı bütün envs üçün verilənlər bazası yaradır
  • db: drop , mövcud env üçün verilənlər bazasını rədd edir
  • db: drop: bütün envs üçün veritabanlarını rədd et
  • db: migrate hələ mövcud deyil olan cari env üçün miqrasiya başlar
  • db: migrate: up bir xüsusi miqrasiya çalışır
  • db: migrate: aşağı bir xüsusi miqrasiya geri qaytarılması
  • db: migrate: statusu mövcud miqrasiya statusu göstərir
  • db: geri qaytarma geri son miqrasiya
  • db: şifrənin cari versiyasını irəli göndərir.
  • db: toxum (yalnız) db / seed.rb faylını işlədir
  • db: schema: yükü şemayı cari env bazasına yükləyir
  • db: schema: dump , mövcud env şemasını sıfırlar (və həmçinin bir db yaratmaq kimi görünür)

  • db: quraşdırma db işləri: şema: yük, db: toxum

  • db: reset db: drop db: quraşdırma işləri
  • db: migrate: redo (db: migrate: aşağı db: migrate: up) və ya (db: rollback db: migrate) göstərilən köçdən asılı olaraq
  • db: migrate: reset işləri db: drop db: db: migrate yaradın

Daha ətraflı məlumat üçün https://github.com/rails/rails/blob/v3.2.12/activerecord/lib/active_record/railties/databases.rake (Rails 3.2.x üçün) və https: // github / rails / rails / blob / v4.0.5 / activerecord / lib / active_record / raillies / databases.rake (Rails 4.0.x üçün)

1032
24 апр. Cavab 24 aprel tarixində moritz tərəfindən verilmişdir. 2012-04-24 19:48 '12 at 7:48 PM 2012-04-24 19:48

DR. DR

İstifadə edin

  • rake db:migrate dəyişiklik etmək istəyirsinizsə
  • rake db:reset Veritabanını yenidən qurmaq istəyirsinizsə, schema.rb dən yenidən yükləyin və verilənlər bazasını schema.rb
  • rake db:schema:load Əgər rake db:schema:load üçün sıfırlama verilənlər bazasını istifadə etmək istəyirsinizsə schema.rb (Bu, bütün məlumatları silməyəcək)

Şərhlər

rake db:schema:load schema.rb rake db:schema:load schema.rb faylında göstərilən schema.rb konfiqurasiya rake db:schema:load . Bu, tətbiqin yeni bir quraşdırılması üçün faydalıdır, çünki db:migrate kimi çox vaxt db:migrate

Mühüm qeyd. db:schema:load serverdəki məlumatları silməyəcək .

rake db:migrate mövcud şemada dəyişiklik edir. Bu şema versiyasına bənzəyir. db:migrate hər hansı ruby ​​faylları üçün db/migrate/ db:migrate də görünəcək və hələ köhnə ilə başlayan məcburi köçürmələri yerinə yetirir. Rails, köç faylının başında olan zaman damgasına baxaraq hansı faylın ən qədim olduğunu bilir. db:migrate data verilənlər bazasında da yerləşdirilə biləcək üstünlüyü ilə gəlir. Əslində bu yaxşı bir təcrübə deyil. rake db:seed data əlavə etmək üçün rake db:seed istifadə etmək daha yaxşıdır.

rake db:migrate yuxarı , aşağı və s. vəzifələri təmin edir. rake db:rollback kimi əmrlərə imkan verən və ən faydalı əmr edir.

border=0

rake db:reset bir db:dropdb:setup
Verilənlər bazasını silmək, yenidən yaradır, şemayı yükləyir və toxum məlumatlarını ilkinləşdirir.

Komutların müvafiq hissəsi verilənlər bazasından alınır


 namespace :schema do desc 'Creates a db/schema.rb file that is portable against any DB supported by Active Record' task :dump => [:environment, :load_config] do require 'active_record/schema_dumper' filename = ENV['SCHEMA'] || File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, 'schema.rb') File.open(filename, "w:utf-8") do |file| ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file) end db_namespace['schema:dump'].reenable end desc 'Loads a schema.rb file into the database' task :load => [:environment, :load_config, :check_protected_environments] do ActiveRecord::Tasks::DatabaseTasks.load_schema_current(:ruby, ENV['SCHEMA']) end 

  # desc 'Drops and recreates the database from db/schema.rb for the current environment and loads the seeds.' task :reset => [ 'db:drop', 'db:setup' ] 

 namespace :migrate do # desc 'Rollbacks the database one migration and re migrate up (options: STEP=x, VERSION=x).' task :redo => [:environment, :load_config] do if ENV['VERSION'] db_namespace['migrate:down'].invoke db_namespace['migrate:up'].invoke else db_namespace['rollback'].invoke db_namespace['migrate'].invoke end end 
14
07 апр. cavab sudo bangbang verilir 07 Apr 2016-04-07 10:12 '16 'da 10:12' də 2016-04-07 10:12 'də

Anladığım kimi, verilənlər bazasını silmək və db/schema.rb əsasən yenidən yaratmaq olacaq. Buna görə schema.rb dosyanızın schema.rb zaman yenilənməsi və versiya nəzarətində olduğundan əmin schema.rb .

2
24 апр. Simon Baqreev tərəfindən verilmiş cavab 24 aprel 2012-04-24 19:25 '12 at 7:25 pm 2012-04-24 19:25

Yalnız bu faylda olduğu kimi yaşadıqlarına inandığından, Active Record Rake-də vəzifələrə baxa bilərsiniz. https://github.com/rails/rails/blob/fe1f4b2ad56f010a4e9b93d547d63a15953d9dc2/activerecord/lib/active_record/tasks/database_tasks.rb

Sənin sualları nədir?

Bu onların gəldikləri yerdən asılıdır və bu vəzifəyə bağlı olaraq fərqləndiyini göstərmək üçün yalnız bir nümunədir. Burada tapşırıqlarla dolu başqa bir fayl var.

https://github.com/rails/rails/blob/fe1f4b2ad56f010a4e9b93d547d63a15953d9dc/activerecord/Rakefile

bu vəzifələri yerinə yetirənlər.

 namespace :db do task create: ["db:mysql:build", "db:postgresql:build"] task drop: ["db:mysql:drop", "db:postgresql:drop"] end 

Bu sizin sualınıza cavab verməyəcək, ancaq gələcəkdə bəzi fikirlər verə bilər və mənbəyi, xüsusən faylları və rake tapşırıqlarını görə bilər. Rayları istifadə etməyə kömək etdikləri üçün çox yaxşı bir iş etdikləri üçün, həmişə kodu yaxşı bir şəkildə sənədləşdirmir. Nə etməli olduğumuzu bilsəydik, hamımız kömək edə bilərik.

0
07 февр. Cavab Douglas G. Allen tərəfindən verilir 07 fevral. 2015-02-07 21:20 '15 'da 21:20' de, 2015-02-07 21:20