Laravel Artisan-如何添加新列并将其填充到包含现有记录的表中?

Laravel Artisan-如何添加新列并将其填充到包含现有记录的表中?,laravel,laravel-artisan,Laravel,Laravel Artisan,我想在现有表中添加一个名为uuid的新的唯一列。这是我的迁移功能 public function up() { Schema::table('suppliers', function (Blueprint $table) { $table->uuid('uuid')->index()->after('id'); }); } 但是,该表已有记录,即100多条记录。如何创建一个函数,用现有记录的唯一值填充此新列?谢谢。您必须指定列的类型,以便将$t

我想在现有表中添加一个名为uuid的新的唯一列。这是我的迁移功能

public function up()
{
    Schema::table('suppliers', function (Blueprint $table) {
        $table->uuid('uuid')->index()->after('id');
    });
}

但是,该表已有记录,即100多条记录。如何创建一个函数,用现有记录的唯一值填充此新列?谢谢。

您必须指定列的类型,以便将$table->uuid更改为$table->string。所以试着跟随

Schema::table('suppliers', function (Blueprint $table) {
    $table->integer('uuid')->unique()->after('id');
});

检查此项在进行您建议的更改后,我出现以下错误<代码>完整性约束冲突:1062个重复条目“”,用于键“suppliers\u uuid\u unique”(SQL:alter tablesuppliers`add unique
suppliers\u uuid\u unique
)。`我想这是因为您已经有100多条记录了。因此,当您运行此命令时,它会自动为uuid列插入NULL 100多次。这是对unique key的诽谤。试试这个$表->增量('uuid')->在('id')之后;我改了你的上一个建议后犯了这个错误
SQLSTATE[42000]:语法错误或访问冲突:1075不正确的表定义;只能有一个自动列,并且必须将其定义为键(SQL:alter table
suppliers`add
uuid
int unsigned not null auto_increment主键在
id
之后)`