Как удалить внешний ключ с помощью миграций Laravel? - PullRequest
0 голосов
/ 31 мая 2018

Я попытался удалить таблицу 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

Справка!

1 Ответ

0 голосов
/ 01 июня 2018

Я нашел решение!

Ты прав!Это ошибка, связанная с неправильным представлением. Я создал таблицы «admin_admin_action» и «admin_action_admin».Поэтому я пытался найти таблицу, которая не имеет внешних ключей, но имеет ту же позицию в базе данных.Они продублированы!Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...