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();
});
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.
Hilfreichster Kommentar
Versuchen Sie es mit
DB::raw
: