Framework: Der DEFAULT-Wert bei der Tabellenmigration kann nicht ausgeführt werden, wenn es sich um eine Funktion handelt

Erstellt am 22. Nov. 2015  ·  3Kommentare  ·  Quelle: laravel/framework

Wenn ich einen Funktionsnamen als Standard für eine Tabellenspalte angebe, wird dieser in Anführungszeichen eingeschlossen, sodass die Funktion bei der Ausführung nicht ausgeführt wird, sondern als Zeichenfolge gespeichert wird.

Dies führt glücklicherweise zu einem Fehler, da UUID col keinen Standard-String-Wert dieses Typs haben kann.

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();
        });

Hilfreichster Kommentar

Versuchen Sie es mit DB::raw :

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

Alle 3 Kommentare

Versuchen Sie es mit DB::raw :

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

Sie können in MySQL keine Funktion als Standardwert verwenden. Es muss eine Konstante sein. Um eine UUID zu generieren, müssen Sie entweder einen Trigger verwenden oder dies manuell tun.

gen_random_uuid() ist eine Postgre-Funktion.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen