Создал свежую базу данных, теперь запуск любой ремесленной команды выдает ошибку об отсутствующей таблице

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

In Connection.php line 647:

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mydatabase.stores'   
  doesn't exist (SQL: select * from `stores`)                                   


In PDOConnection.php line 63:

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mydatabase.stores'   
  doesn't exist                                                                


In PDOConnection.php line 61:

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mydatabase.stores'   
  doesn't exist                                                                

Я давно не запускал php artisan migrate:refresh, поэтому не уверен, где используется таблица stores, которая вызывает эту ошибку. Добавление флага -v не дает никаких дополнительных выходных данных для дальнейшей трассировки стека.

Я попытался вручную удалить базу данных и воссоздать ее через mysql. Я пробовал composer dump-autoload, но и это не помогает. Я не могу запустить php artisan migrate:install, потому что вызов ЛЮБОЙ команды ремесленника вызовет ту же ошибку. Даже вызов php artisan выдает ошибку. Я попытался посмотреть на своих поставщиков услуг, чтобы увидеть, ссылаются ли на таблицу в каком-либо из конструкторов, но я не вижу, чтобы она использовалась.

Есть ли где-нибудь в коде, который я должен проверить на использование этой таблицы? Я не уверен, что создается при вызове php artisan.

Таблица stores на самом деле является моей первой миграцией, поэтому она должна быть создана первой, но по какой-то причине она вызывается как часть ремесленного процесса.


person Oscar A Garcia    schedule 31.05.2019    source источник
comment
Вы можете попробовать grep -R stores * из корня вашего каталога и grep -R Store * или любое другое имя класса. Вы, вероятно, захотите проверить что-нибудь в методе __construct() любой из ваших команд, так как он загружает каждый отдельный класс команды artisan всякий раз, когда artisan запускается   -  person aynber    schedule 31.05.2019
comment
@aynber Это было решением, проверьте мой ответ. Огромное спасибо!   -  person Oscar A Garcia    schedule 31.05.2019
comment
Добро пожаловать! Я выучил это на собственном горьком опыте несколько лет назад   -  person aynber    schedule 31.05.2019


Ответы (1)


Как упоминал @aynber в комментарии к моему вопросу, проблема заключалась в том, что несколько моих команд в каталоге app/Console/Commands/* создавали экземпляр объекта в своем конструкторе, который ссылался на модель Store в своем родительском конструкторе. В частности, он работал на линии

$this->storeId = Store::get()->last()->id;

Комментирование этой строки позволило мне запускать мои ремесленные команды.

person Oscar A Garcia    schedule 31.05.2019