راکت
حل شده

راه حل مقدار پیش فرض migration json column در mysql 5.7

1 پاسخ

با سلام خدمت اساتید محترم
من قصد دارم برای آپدیت یک پروژه لاراولی، در جدول Users یک ستون از نوع Json با مقدار پیش فرض آرایه خالی به این شکل [ ] یا DB::raw('(JSON_ARRAY())') ایجاد کنم

    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->json('roles')->default(DB::raw('(JSON_ARRAY())'));
        }
    }

اما
با خطا روبرو میشم. #1101 - BLOB, TEXT, GEOMETRY or JSON column 'media' can't have a default value

خودم فکر میکنم نوع داده ای (()JSON_ARRAY) رو این ورژن mysql 5.7 شناسایی نمیکنه اما من باید این کارو انجام بدم.
دوستان اگه امکانش هست راه حلی بهم بدیم که مقدار پیش فرض تعیین نکنم اما مثلا از طریق seeder یا با هر شکل دیگه ای این ستون جدید رو مقدار دهی اولیه کنم البته با اجرای همان مایگریشن . یعنی با اجرای migration آن seeder مربوطه هم اجرا بشه
لطفا اگه راه حل دیگه ای هم مد نظر دارید خوش حال میشم بهم راهنمایی کنید
با تشکر
@hesammousavi
@abbas.ameriyan
@websaz
@mohaligateway
@ali.bayat
@abdolrahman
@juza66

ثبت پرسش جدید

پاسخ‌ها

1
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

فیلد های json از نسخه 5.7.22 به بعد MySQL موجود هستند.. اما پیشنها من ارتقا به نسخه ۸ MySQL هست..

هر چند این خطا که داری به خاطر مقدار پیش فرض هستو میگه نمیتونی به این فیلد مقدار پیش فرض بدی
میتونی فیلد رو nullable کنی
بعد با استفاده از یه کلاس seeder بهش مقدار بدی

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام