«Сброс миграции» не работает при наличии ошибки в коде - PullRequest
0 голосов
/ 08 октября 2019

В базовом приложении Laravel в классе пользователя я добавил:

use SoftDeletes;

Приложение больше не работает, так как в столбцеТаблица пользователей базы данных MySql. Я пытаюсь добавить этот столбец, удалив все таблицы и воссоздав их (или удалив все таблицы):

Ремесленник migrate: refresh --seed

Ремесленник migrate: reset

кустарная миграция: свежая

Во всех случаях я получаю сообщение об ошибке:

Подсветка \ База данных \ QueryException: SQLSTATE [42S22]: столбец не найден:1054 Неизвестный столбец 'users.deleted_at' в 'предложении where' (SQL: select существует (выберите * из users, где email = user@gmail.com и users. deleted_at равно нулю) как exists)

что я не понимаю. Если я отменяю миграции, artisan должен вызывать метод down () только для моего класса User:

public function down()
{
    Schema::dropIfExists('users');
}

, и удаление таблицы не должно завершиться ошибкой, если столбец не найден.

PS Я использую docker-compose для запуска php, mysql, artisan, composer, nginx и nodejs - если это может иметь значение.

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Вы также добавили программные удаления в миграцию?

public function up()
{
    Schema::table('users', function(Blueprint $table)
    {
        $table->softDeletes();
        ...
    });
}
1 голос
/ 08 октября 2019

Исходный ответ был неверным, так как вопрос также несколько неправильный, после обсуждения в чате мы обнаружили, что у автора были миграции также в AppServiceProvider, который препятствовал фактическим миграциям происходить через CLI.

Вы можете прочитать в чате здесь . Удаление вызовов ремесленников из AppServiceProvider решило эту проблему

...