Я попытался удалить таблицу InnoDB, которая содержит внешний ключ, с помощью Laravel Migrations, но я обнаружил, что мне нужно сначала удалить внешний ключ, но то, что я прочитал в документе и в статьях, не работает.
Вот часть кода, создающая проблему:
Schema::table('admin_admin_action', function(Blueprint $table) {
$table->dropForeign(['admin_action_id']);
$table->dropColumn('admin_action_id');
$table->dropForeign(['admin_id']);
$table->dropColumn('admin_id');
});
А вот код ошибки
Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'admin_admin_action_admin_action_id_foreign'; check that column/key exists (SQL: alter table `admin_admin_action` drop foreign key `admin_admin_action_admin_action_id_foreign`)
Эта таблица является результатом связи многих ко многими вот внешние ключи
Schema::table('admin_admin_action', function($table) {
$table->unsignedInteger('admin_id');
$table->unsignedInteger('admin_action_id');
$table->foreign('admin_id')->references('id')->on('admin');
$table->foreign('admin_action_id')->references('id')->on('admin_actions');
});
Я также попытался указать полное имя внешнего ключа, но он говорит, что ключ / столбец не существует, хотя он существует в базе данных.
Я сомневаюсь, что это проблема миграции, потому что миграция проходит гладко, но это не относится к откату.
Редактировать: Внешние ключи соответственно называются
admin_admin_action_admin_id_foreign
admin_admin_action_admin_action_id_foreign
Справка!