Framework: لا يمكن تنفيذ القيمة الافتراضية في ترحيل الجدول إذا كانت دالة

تم إنشاؤها على ٢٢ نوفمبر ٢٠١٥  ·  3تعليقات  ·  مصدر: laravel/framework

عندما أحدد اسم دالة كعمود افتراضي في الجدول ، يتم التفاف هذا في علامات اقتباس ، لذلك عند تنفيذ الوظيفة لا يتم تشغيلها ، يتم حفظها كسلسلة.

هذا يعطي خطأ لحسن الحظ لأن UUID col لا يمكن أن تحتوي على قيمة سلسلة افتراضية من هذا النوع.

Schema::create('products', function(Blueprint $table)
        {
            $table->uuid('id')->default('gen_random_uuid()')->primary('products_pkey');
            $table->string('name')->nullable();
            $table->string('max_projects')->nullable();
            $table->timestamps();
            $table->softDeletes();
        });

التعليق الأكثر فائدة

جرب بـ DB::raw :

 $table->uuid('id')->default(DB::raw('gen_random_uuid()'))->primary('products_pkey');

ال 3 كومينتر

جرب بـ DB::raw :

 $table->uuid('id')->default(DB::raw('gen_random_uuid()'))->primary('products_pkey');

لا يمكنك استخدام دالة كقيمة افتراضية في MySQL. يجب أن تكون ثابتة. لإنشاء UUID ، يجب عليك إما استخدام مشغل أو القيام بذلك يدويًا.

gen_random_uuid() هي وظيفة Postgre.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات