迁移回滚Laravel 5.2后无法重新迁移迁移

时间:2018-02-22 06:45:36

标签: migration laravel-5.2

美好的一天,我是laravel的新手我正在进行迁移回滚并且已成功完成

  

回滚:2018_02_22_172102_adding_fk_constrains_products_to_product_types_and_service_sub_types_table

但是当我尝试重新迁移时,我在下面遇到了这个错误。顺便说一下,我不想删除列,因为它已经存在,我不想丢失该列中的现有数据。我只想在这些表之间添加约束

  

[照亮\数据库\ QueryException]       SQLSTATE [23000]:完整性约束违规:1022无法写入;表'#sql-2fc8_17c'中的重复键(SQL:alter table products添加约束products_product_type_id_foreign       外键(product_type_id)在更新级联上引用product_typesid

     

[PDOException]       SQLSTATE [23000]:完整性约束违规:1022无法写入;表'#sql-2fc8_17c'中的重复键

Table     Non_unique  Key_name                            Seq_in_index  Column_name
--------  ----------  ----------------------------------  ------------  -------------------
products           0  PRIMARY                                        1  id             
products           1  products_product_type_id_index                 1  product_type_id  
products           1  products_service_sub_type_id_index             1  service_sub_type_id

这是我的迁移代码

public function up()
{

    Schema::table('products',function (Blueprint $table){
        $table->integer('product_type_id')->unsigned()->index()->change();
        $table->foreign('product_type_id')->references('id')->on('product_types')->onUpdate('cascade');

        $table->integer('service_sub_type_id')->nullable()->unsigned()->index()->change();
        $table->foreign('service_sub_type_id')->references('id')->on('service_sub_types')->onUpdate('cascade');

    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{

    Schema::table('products', function(Blueprint $table){
        $table->dropForeign(['product_type_id']);
        $table->dropForeign(['service_sub_type_id']);
    });

}

1 个答案:

答案 0 :(得分:0)

我只是在迁移中删除以下代码

  

$表 - >整数( 'product_type_id') - >无符号() - >指数() - >变化();

     

$表 - >整数( 'service_sub_type_id') - >可为空() - >无符号() - >指数() - >变化();

public function up()
{

   Schema::table('products',function (Blueprint $table){
      //$table->integer('product_type_id')->unsigned()->index()->change();
      $table->foreign('product_type_id')->references('id')->on('product_types')->onUpdate('cascade');

      //$table->integer('service_sub_type_id')->nullable()->unsigned()->index()->change();
      $table->foreign('service_sub_type_id')->references('id')->on('service_sub_types')->onUpdate('cascade');

});
}

当我重新迁移时,它已成功迁移..