我不能删除唯一索引

e5nqia27  于 2021-06-23  发布在  Mysql
关注(0)|答案(4)|浏览(405)

我创建了唯一索引:

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

现在我把它扔了

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

常规错误:1553无法删除索引“connections\u owner\u id\u promotor\u id\u unique”:外键约束中需要此索引(sql:alter table connections drop index connections\u owner\u id\u promotor\u id\u unique)
而且,我以前也试过删除外键

$table->dropForeign('connections_promoter_id_foreign');

但还是没有结果

nhhxz33t

nhhxz33t1#

基于此删除多列唯一键而不删除外键?我得到了同样有效的解决方案:

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

wfsdck302#

从索引上的laravel docs,您可以创建具有指定名称的唯一索引:

因此,为了省去您调试laravel如何构造索引的名称,您可以在添加索引时为其指定一个名称,例如:

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

当你放下它时,你用的是同一个名字:

$table->dropUnique('owner_promoter_index');
puruo6ea

puruo6ea3#

使用php管理,我有同样的问题,但很容易做到这一点!

niwlg2el

niwlg2el4#

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

相关问题