Reza Sadeghzadeh
2 سال پیش توسط Reza Sadeghzadeh مطرح شد
1 پاسخ

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

با سلام خدمت اساتید محترم
من قصد دارم برای آپدیت یک پروژه لاراولی، در جدول 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


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 2 سال پیش مطرح شد
1

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

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


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

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