我无法删除唯一索引

时间:2018-08-06 13:02:04

标签: php mysql laravel laravel-5 laravel-5.6

我创建了唯一索引:

 $table->unique(['owner_id', 'promoter_id']);

现在我将其放下托盘

$table->dropUnique(['owner_id', 'promoter_id']);
  

一般错误:1553无法删除索引   'connections_owner_id_promoter_id_unique':在外键中需要   约束(SQL:更改表连接删除索引   connections_owner_id_promoter_id_unique)

此外,我尝试过先删除外键

$table->dropForeign('connections_promoter_id_foreign');

但仍然没有结果

4 个答案:

答案 0 :(得分:4)

Laravel docs on Indexes中,您可以创建具有指定名称的唯一索引:

enter image description here

因此,为了省去调试laravel如何将名称构造为索引的麻烦,您可以在添加索引时为其分配名称,例如:

$table->unique(['owner_id', 'promoter_id'], 'owner_promoter_index');

然后将其放下时,使用相同的名称:

$table->dropUnique('owner_promoter_index');

答案 1 :(得分:0)

基于此Drop muli-column unique key without dropping foreign key?,我得到了也可以使用的解决方案:

Schema::table('connections', function ($table){
            $table->index('owner_id');
            $table->dropUnique(['owner_id', 'promoter_id']);
        });

答案 2 :(得分:0)

首先删除约束。

对于sqlserver: 如果您不知道约束名称,请使用sp_helpconstraint TABLE_A,约束名称可能与索引相同。 然后alter table TABLE_A drop constraint UQ__TABLE_A_XXXXXXXXXX。然后删除索引。

答案 3 :(得分:-1)

使用PHP admin,我遇到了同样的问题,但是很容易从那里开始!