我创建了唯一索引:
$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');
但仍然没有结果
答案 0 :(得分:4)
在Laravel docs on Indexes中,您可以创建具有指定名称的唯一索引:
因此,为了省去调试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,我遇到了同样的问题,但是很容易从那里开始!