القضبان Rename_Column مشكلة الترحيل
-
13-09-2019 - |
سؤال
أحاول تشغيل هجرة في قاعدة بيانات موجودة لتغيير اسم العمود على جدول. عندما أقوم بتشغيل الترحيل، أحصل على خطأ تفيد بأن الحقول Blob / Text لا يمكن أن يكون لها قيمة افتراضية. العمود المعني هو عمود نصي، مع سمة غير فارغة، ولكن لا قيمة افتراضية.
الهجرة التي تحاول المحاولات هي:
تغيير الجدول xxxxx
يتغيرون abcd
ABCD
النص الافتراضي "" غير فارغ
الآن، لم أسأل الترحيل تغيير نوع العمود، لقد طلبت ذلك فقط إعادة تسمية العمود، فلماذا تحاول الترحيل أن تفعل أي شيء إلى نوع العمود؟
لقد غوغلت هذه القضية، ولا تأتي مع تفسير أو حل؛
أي مساعدة موضع تقدير.
فيكرام
المحلول
يبدو أن هناك تذكرة طويلة دون حل حول هذه المسألة، كما هو موضح هنا:
السلوك الافتراضي للقضبان هو جعل الأعمدة غير خالية، نظرا لأن هذا يمنع إيجابيات خاطئة على فتحيات التواجد، إلخ، عند ترجمة سلاسل فارغة إلى Ruby. أي فرصة يمكنك العمل حولها عن طريق إعادة تعريف عمود النص الخاص بك للعمل مع قيم فارغة في وحدة التحكم MySQL؟
تعديل
يمكنك القيام بذلك في ملف الترحيل الخاص بك، إنها ليست طريقة القضبان ولكنها أجمل بكثير من إرسال بريد إلكتروني إلى الجميع لتغيير نسخهم المحلية:
MyModel.connection.execute "ALTER TABLE xxxxx CHANGE abcd ABCD text DEFAULT NULL"