تطهير أو إعادة إنشاء قاعدة بيانات Ruby on Rails




ruby-on-rails ruby-on-rails-3 (12)

لدي قاعدة ديف روبي على القضبان مليئة بالبيانات. أريد حذف كل شيء وإعادة بناء قاعدة البيانات. أفكر في استخدام شيء مثل:

rake db:recreate

هل هذا ممكن؟


أعتقد أن أفضل طريقة لتشغيل هذا الأمر:

**rake db:reset** it does db:drop, db:setup
 rake db:setup does db:create, db:schema:load, db:seed

أعرف طريقتين للقيام بذلك:

سيؤدي هذا إلى إعادة تعيين قاعدة البيانات وإعادة تحميل مخططك الحالي بجميع:

rake db:reset db:migrate

سيؤدي ذلك إلى تدمير db ثم إنشائه ثم ترحيل مخططك الحالي:

rake db:drop db:create db:migrate

سيتم فقدان جميع البيانات في كلتا السيناريوهين.


استخدام مثل

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

كل ما في سطر واحد. هذا أسرع لأنه لا يتم إعادة تحميل البيئة مرارًا وتكرارًا.

ديسيبل: إسقاط - سوف إسقاط قاعدة البيانات.

ديسيبل: إنشاء - سيتم إنشاء قاعدة بيانات (سيتم أخذ المضيف / ديسيبل / كلمة المرور من التكوين / database.yml)

db: migrate - سيتم تشغيل عمليات الترحيل الحالية من الدليل (db / migration / .rb) *.

ديسيبل: البذور - سيتم تشغيل البيانات البذور ممكن من الدليل (ديسيبل / الهجرة / seed.rb) ..

أنا عادة ما يفضل:

rake db:reset

للقيام بكل مرة.

في صحتك!


اعتمادا على ما تريد ، يمكنك استخدام ...

rake db:create

... لبناء قاعدة البيانات من الصفر من config/database.yml ، أو ...

rake db:schema:load

... لبناء قاعدة البيانات من الصفر من ملف schema.rb الخاص بك.


على القضبان 4 ، كل ما هو مطلوب

$ rake db:schema:load

سيؤدي ذلك إلى حذف المحتويات بالكامل على قاعدة البيانات الخاصة بك وإعادة إنشاء المخطط من ملف schema.rb ، دون الحاجة إلى تطبيق جميع عمليات الترحيل واحدة تلو الأخرى.



لإسقاط قاعدة بيانات معينة ، يمكنك القيام بذلك على وحدة تحكم rails:

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

ثم ترحيل DB مرة أخرى

$bundle exec rake db:migrate 

لقد قدمت اليوم بعض التغييرات على مخطط القضبان. أدركت أنني بحاجة إلى نموذجين إضافيين في التسلسل الهرمي وبعض الآخرين ليتم حذفهم. كان هناك العديد من التغييرات الطفيفة المطلوبة للنماذج ووحدات التحكم.

أضفت النموذجين الجديدين وأنشأتهما باستخدام:

rake db:migrate

ثم قمت بتحرير الملف schema.rb. قمت بإزالة النماذج القديمة التي لم تعد مطلوبة ، وقمت بتغيير حقل المفتاح الخارجي كما هو مطلوب وقمت بإعادة ترتيبه قليلاً لجعله أكثر وضوحًا بالنسبة لي. لقد حذفت جميع عمليات الترحيل ، ثم أعدت تشغيل الإصدار عبر:

rake db:reset

انها عملت على أكمل وجه. يجب إعادة تحميل جميع البيانات ، بالطبع. أدرك ريلز أن الهجرات قد تم حذفها وإعادة ضبط علامة المياه العالية:

-- assume_migrated_upto_version(20121026094813, ["/Users/sean/rails/f4/db/migrate"])

من تشغيل سطر الأوامر

rake db:migrate:reset

وفقًا لدليل Rails ، يجب استخدام هذه الخطوط الملاحية المنتظمة لأنها ستتحمل من schema.rb بدلاً من إعادة تحميل ملفات الترحيل واحدة تلو الأخرى:

rake db:reset

يمكنك استخدام سطر الأوامر التالي:

rake db:drop db:create db:migrate db:seed db:test:clone

يمكنك القيام يدويا:

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

أو فقط rake db:reset ، الذي سيقوم بتشغيل الخطوات أعلاه ولكن سيعمل أيضًا على تشغيل ملف db/seeds.rb .

schema.rb بسيط هو أن rake db:reset تحميل الأحمال مباشرة من ملف schema.rb مقابل تشغيل جميع ملفات الترحيل مرة أخرى.

تحصل على البيانات في مهب في جميع الحالات.







rake