美好的一天,我是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_types
(id
)[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']);
});
}
答案 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');
});
}
当我重新迁移时,它已成功迁移..