بالضبط ماذا أشعل النار ديسيبل: يهاجرون تفعل؟

StackOverflow https://stackoverflow.com/questions/1007187

  •  06-07-2019
  •  | 
  •  

سؤال

هل أشعل النار ديسيبل: يهاجرون فقط إضافة هجرات جديدة، أو أنها لا تسقط عن الهجرات / التغييرات وبناء كل ما هو جديد

وأعتقد أن أشعل النار هو رمي خطأ لأنه يحاول الوصول إلى السمة الجدول في الهجرة 040 التي تم حذفها في الهجرة 042. بطريقة أو بأخرى بلدي DB وأشعل النار هم خارج التوافق وأريد أن اصلاحها.

وبالنسبة لك الخبراء إلى هناك - هل هو شائع لأشعل النار للخروج من التوافق مع الهجرات؟ كيف يمكنني تجنب ذلك (لا، أنا لا باليد تعديل بلدي المخطط أو أشعل النار الملفات).

هل كانت مفيدة؟

المحلول

وفي كل مرة تقوم بإنشاء الهجرة باستخدام البرامج النصية (مثل النصي / توليد نموذج ...) يضاف هجرة جديدة إلى الدليل الصحيح على استعداد لمزامنته مع قاعدة بيانات حقيقية.

وأشعل النار في الواقع ديسيبل: الهجرة الشيكات فقط التي الهجرات في عداد المفقودين لا تزال بحاجة ليتم تطبيقها على قاعدة البيانات دون أي اهتمام حول تلك previouse

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

نصائح أخرى

عند استخدام القضبان الهجرات، يتم إنشاء جدول يسمى schema_migrations تلقائيا، الذي يتتبع ما طبقت الهجرات، عن طريق تخزين رقم الإصدار من كل هجرة (وهذا هو الرقم الذي مقدمات اسم الهجرة في اسم الملف، أي ديسيبل / ترحيل / _20090617111204__migration.rb). عند تشغيل rake db:migrate للهجرة حتى، والهجرات التي لم يتم تشغيل سابقا فقط (أي لا يحتوي على النسخة الخاصة في الجدول) سيتم تشغيل (لهذا السبب، تغيير الهجرة التي سبق تنفيذها لن يكون لها أي تأثير عند تشغيل db:migrate ). عندما المهاجرة باستمرار، وجميع إصدارات وجدت في schema_migrations التي هي أكبر من الإصدار الذي تم التراجع إلى سيتم التراجع عنها.

ووالهجرة يعني أنك تتحرك من الإصدار الحالي إلى إصدار أحدث (كما يقال في الجواب الأول). استخدام أشعل النار ديسيبل: الهجرة يمكنك تطبيق أية تغييرات جديدة إلى المخطط الخاص بك. ولكن إذا كنت ترغب في التراجع إلى الهجرة السابقة يمكنك استخدام أشعل النار ديسيبل: التراجع لإلغاء التغييرات الجديدة إذا تم تعريفها بشكل غير صحيح. تحذير: بذلك البيانات الخاصة بك سوف تضيع

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top