不能在迁移回滚时使字段不可为空


Cant make field not nulleable on migration rollback

我有这个迁移。

public function up()
{
    Schema::table('products', function (Blueprint $table) {
        $table->integer('category_id')->nullable()->unsigned()->change();
    });
}

public function down()
{
    Schema::table('products', function (Blueprint $table) {
        $table->integer('category_id')->nullable(false)->change();
    });
}

它使category_id字段在up方法上为空并且工作良好,但当我尝试回滚时,它返回此错误:

[PDOException]
SQLSTATE[HY000]: General error: 1832 Cannot change column 'category_id': used in a foreign key constraint 'products_category_id_foreign'

回滚时我该怎么做?此迁移的目的是使字段在运行时可为空,而在回滚时使其不可为空。

我认为你可以尝试关闭外键约束。请记住这句话的含义。