سؤال

أحاول تشغيل هجرة في قاعدة بيانات موجودة لتغيير اسم العمود على جدول. عندما أقوم بتشغيل الترحيل، أحصل على خطأ تفيد بأن الحقول Blob / Text لا يمكن أن يكون لها قيمة افتراضية. العمود المعني هو عمود نصي، مع سمة غير فارغة، ولكن لا قيمة افتراضية.

الهجرة التي تحاول المحاولات هي:

تغيير الجدول xxxxx يتغيرون abcd ABCD النص الافتراضي "" غير فارغ

الآن، لم أسأل الترحيل تغيير نوع العمود، لقد طلبت ذلك فقط إعادة تسمية العمود، فلماذا تحاول الترحيل أن تفعل أي شيء إلى نوع العمود؟

لقد غوغلت هذه القضية، ولا تأتي مع تفسير أو حل؛

أي مساعدة موضع تقدير.

فيكرام

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

المحلول

يبدو أن هناك تذكرة طويلة دون حل حول هذه المسألة، كما هو موضح هنا:

القضبان تقرير الأخطاء

السلوك الافتراضي للقضبان هو جعل الأعمدة غير خالية، نظرا لأن هذا يمنع إيجابيات خاطئة على فتحيات التواجد، إلخ، عند ترجمة سلاسل فارغة إلى Ruby. أي فرصة يمكنك العمل حولها عن طريق إعادة تعريف عمود النص الخاص بك للعمل مع قيم فارغة في وحدة التحكم MySQL؟

تعديل

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

MyModel.connection.execute "ALTER TABLE xxxxx CHANGE abcd ABCD text DEFAULT NULL"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top