0

我尝试删除一个列,它是一个外键:

$table = $this->table('users');
$table->removeColumn('province_id');
$table->update();

上面给出了数据库错误:The object 'users_province_id' is dependent on column 'province_id'。如果我尝试先删除 FK:

$table = $this->table('users');
$table->removeIndex('province_id');
$table->removeColumn('province_id');
$table->update();

我犯了同样的错误。使用removeIndexByName

$table = $this->table('users');
$table->removeIndexByName('users_province_id');
$table->removeColumn('province_id');
$table->update();

也不行。谢谢你的帮助。

4

2 回答 2

1

您的代码不会删除外键约束,而只会删除索引和列。要删除外键约束,您可以使用以下dropForeignKey()方法:

$table = $this->table('users');
$table
    ->dropForeignKey(
        // by columns used in the constraint, this would remove _all_
        // foreign key constraints on the table that are using the
        // `province_id` column
        'province_id',

        // optionally pass the name of the constraint in the second
        // argument instead, in order to remove only a specific single
        // constraint by its name
        'foreign_key_constraint_name'
    )
    ->removeIndex('province_id')
    ->removeColumn('province_id')
    ->update();

也可以看看

于 2020-08-20T14:06:07.090 回答
0

好的,因为有人发布了正确的答案而不是删除它,我将发布解决方案:

而不是使用removeIndex一个应该使用dropForeignKey('province_id').

于 2020-08-20T14:17:36.457 回答