Laravel 的迁移刷新期间无法删除外键
Cannot drop foreign key during Laravel's migration refresh
当我在 table 上尝试 运行 php artisan migrate:refresh --seed
时,它总是卡在这个:
public function down()
{
if (Schema::hasTable('leads')) {
Schema::table('leads', function (Blueprint $table) {
$table->dropForeign('leads_dealer_id_foreign'); //this is the line
$table->dropIndex('leads_dealer_id_index');
$table->dropColumn('dealer_id');
Schema::dropIfExists('leads');
});
}
}
错误是:Base table or view not found: 1146 Table 'leads' doesn't exist (SQL: alter table leads
删除外键 leads_dealer_id_foreign
)
我已经在上面的代码片段中对产生错误的行进行了注释。
为什么会抱怨 table 不存在?即使 table 不存在,我也将所有内容都包裹在 Schema::hasTable('leads')
中,因此它甚至不应该执行该行。
是什么导致我的 leads
table 提早掉线?我查看了我的其他迁移,除了它自己的迁移文件外,我没有在任何地方删除 table。
谢谢
您必须先删除外键,然后再删除 table。为了在闭包外移动 Schema::dropIfExists('leads');
:
public function down()
{
if (Schema::hasTable('leads')) {
Schema::table('leads', function (Blueprint $table) {
$table->dropForeign('leads_dealer_id_foreign'); //this is the line
$table->dropIndex('leads_dealer_id_index');
$table->dropColumn('dealer_id');
});
Schema::dropIfExists('leads');
}
}
当我在 table 上尝试 运行 php artisan migrate:refresh --seed
时,它总是卡在这个:
public function down()
{
if (Schema::hasTable('leads')) {
Schema::table('leads', function (Blueprint $table) {
$table->dropForeign('leads_dealer_id_foreign'); //this is the line
$table->dropIndex('leads_dealer_id_index');
$table->dropColumn('dealer_id');
Schema::dropIfExists('leads');
});
}
}
错误是:Base table or view not found: 1146 Table 'leads' doesn't exist (SQL: alter table leads
删除外键 leads_dealer_id_foreign
)
我已经在上面的代码片段中对产生错误的行进行了注释。
为什么会抱怨 table 不存在?即使 table 不存在,我也将所有内容都包裹在
Schema::hasTable('leads')
中,因此它甚至不应该执行该行。是什么导致我的
leads
table 提早掉线?我查看了我的其他迁移,除了它自己的迁移文件外,我没有在任何地方删除 table。
谢谢
您必须先删除外键,然后再删除 table。为了在闭包外移动 Schema::dropIfExists('leads');
:
public function down()
{
if (Schema::hasTable('leads')) {
Schema::table('leads', function (Blueprint $table) {
$table->dropForeign('leads_dealer_id_foreign'); //this is the line
$table->dropIndex('leads_dealer_id_index');
$table->dropColumn('dealer_id');
});
Schema::dropIfExists('leads');
}
}