Несоответствие внешнего ключа - "password_resets" ссылается на "пользователей" в dropColumn - PullRequest
3 голосов
/ 30 апреля 2020

Я пытаюсь удалить столбец (давайте назовем его fooboo) в таблице 'users' с миграциями, и я получаю следующую ошибку:

Общая ошибка: 1 несоответствие внешнего ключа - «password_resets» ссылается на «users» (SQL: INSERT INTO users (id, name, email, пароль, fooboo, made_at, updated_at) SELECT id, имя, адрес электронной почты, пароль, fooboo, made_at, updated_at FROM __temp__users)

Функция up() в классе миграции:


    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('fooboo');
        });
    }

В этом столбце, в частности, нет индекса, FK или чего-либо, что могло бы создать конфликт. Это просто логическое значение со значением по умолчанию FALSE.

Я получаю эту ошибку с sqlite при запуске моих модульных тестов (phpunit). Я не могу решить эту проблему, просто удаляя столбец в классе миграции, который его создает, мне нужна новая миграция для запуска на рабочем сервере.

Спрашивая нашего друга в Google, я могу найти только эту ошибку, связанную с пропущенными миграциями, это не мой случай.

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете добавить эту строку в самом начале:

Schema::disableForeignKeyConstraints();

и в конце добавить эту строку в конце:

Schema::enableForeignKeyConstraints();

Это отключит ограничение внешнего ключа.

...