使用现有数据库数据将 Not Nullable 列添加到 Laravel 迁移

vei*_*lig 5 php mysql sqlite laravel laravel-4

我必须向现有表中添加一个新列,该表中已经有数据并且遇到了一些问题。

  1. 如何添加此列?它将成为一个Not Nullable领域。我现在可以用默认数据填充它,稍后再返回并更新。所以如果我们需要在添加时删除约束。我假设我将需要使用直接的 SQL 查询。

  2. 使用 PHPUnit 和 SQLite 完成这项工作,目前我收到一个错误 SQLSTATE[HY000]: General error: 1 Cannot add a NOT NULL column with default value NULL (SQL: alter table "tracks" add column "short_description" text not null)

我将如何修改此迁移?

public function up()
{
    Schema::table('tracks', function(Blueprint $table)
    {
        $table->text('short_description')->after('description');
    });
}
Run Code Online (Sandbox Code Playgroud)

小智 4

您必须设置默认值:

public function up()
{
    Schema::table('tracks', function(Blueprint $table)
    {
        $table->text('short_description')->after('description')->default('default_value');
    });
}
Run Code Online (Sandbox Code Playgroud)