Подтвердить что ты не робот

Класс смертельной ошибки Laravel не найден при миграции

  • Я запустил artisan migrate:reset.
  • Я удалил некоторые из моих файлов миграции, потому что мне больше не нужны эти таблицы.
  • Я запустил composer dump-autoload, а затем artisan dump-autoload
  • Я побежал artisan migrate, и я продолжаю получать эту ошибку:

    PHP Неустранимая ошибка: класс 'Foo' не найден в /vagrant/LaravelBackend/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php в строке 297

Я попытался:

  • Запустить еще раз composer dump-autoload и artisan dump-autoload (также используется artisan clear-compiled)
  • Удалите таблицу миграции и запустите artisan migrate:install
  • Удалите файл поставщика и композитора .lock и запустите composer install
  • Поиск в моем проекте с помощью PHPStorm для класса Foo. Не нашел ничего.

    Я продолжаю получать ту же ошибку. Это первый раз, когда я запускаю его, так как обновляюсь до 4.2, если это может быть связано. Что-нибудь еще я должен искать?

4b9b3361

Ответ 1

Я решил свою проблему

  • Удаление всей миграции
  • Запуск composer dump-autoload
  • Добавление их обратно по одному и запуск php artisan migrate
  • Удаление тех, которые привели Laravel к ошибке.
  • Создать новые миграции для замены удаленных.

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

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

Ответ 2

У меня тоже была эта проблема. Необходимо помнить: имя класса должно соответствовать имени файла. Простое переименование файлов помогло мне:)

Например: в файле "2014_12_08_100923_create_items_tables.php" должен быть класс с именем "CreateItemsTables" с использованием слов CamelCase.

Ответ 3

Я столкнулся с этим, и решение было отличным от всего вышеперечисленного. Причина, по которой он терпел неудачу, состояла в том, что имя файла все еще упоминалось в таблице миграции БД. Поскольку не было уникальных столбцов, я не мог удалить его с помощью PHPMyAdmin и должен был выполнить маршрут CLI.

Войдите на свой сервер с правами root. Введите следующее:

mysql -p database_name

(теперь он запрашивает ваш пароль. С этого момента все предшествует mysql > , который просто означает, что вы находитесь в среде Mysql.

select * from migrations;

Найдите файл переноса, который вы удалили, и скопируйте имя.

delete from migrations where migration = '2015_07_21_000119_create_some_table';

Следует упомянуть что-то о 1-й строке. Теперь убедитесь, что он ушел, набрав первую команду еще раз:

select * from migrations;

Если он вышел из среды Mysql, набрав

exit;

Теперь попробуйте "php artisan migrate: rollback" снова, и он должен работать как шарм: -)

Ответ 4

Существует более простой способ.

  • Восстановите эти миграции удаления вручную. artisan make:migration
  • выполнить artisan migrate:reset для отката
  • Удалите только созданные файлы фиктивных миграций.
  • run artisan migrate:refresh

Ответ 5

Я знаю, что это немного мимо, но на самом деле существует лучший способ. Запустите следующее в терминале и не стесняйтесь удалить любой из них:

~$ php artisan clear-compiled;php artisan cache:clear;php artisan config:clear;php artisan debugbar:clear;php artisan view:clear;php artisan optimize

Для выполнения обычной задачи создайте исполняемый файл с именем artisan-clear:

#!/bin/bash

php artisan clear-compiled
php artisan cache:clear
php artisan config:clear
php artisan debugbar:clear
php artisan view:clear
php artisan optimize

Ответ 6

Фактическое решение - использовать правильное название для ваших переводов. Возможно, вам понадобится

composer dump-autoload

Файлы миграции должны быть следующими: YYYY_MM_DD_000000_create_some_table.php и имя класса внутри должно быть

class CreateSomeTable extends Migration{}

Ответ 7

Для меня решение заключалось в том, что имя моего класса внутри миграции каким-то образом начиналось с строчной буквы. Когда я изменил имя класса, чтобы все было в верхнем регистре, а затем запустил composer dump-autoload, он в итоге работал у меня. Это использует Laravel 5.1, для чего он стоит.

Ответ 8

Мне понравилось: 1. Удаленная строка не существует миграции из таблицы миграции из базы данных 2. И запустите команду php artisan migrate: refresh

Это помогло решить мою проблему.

* все ваши данные будут удалены из таблиц базы данных

Ответ 9

версия 5.1.3 та же проблема исправить это я:

  • удалить базу данных всех таблиц
  • php artisan migrate: status

вывод: No migrations found. ok использовать его

  • php artisan migrate: install
  • php artisan migrate

:

Migrated: 2016_11_24_093015_dt_some_table
Migrated: 2016_12_05_141004_dt_some_table
Migrated: 2016_12_07_110518_dt_some_table
Migrated: 2016_12_08_141807_dt_some_table
Migrated: 2016_12_13_090832_dt_some_table

эта проблема решена.

Ответ 10

У меня была та же проблема. Когда я нажимал php artisan migrate:reset, я получил Class 'CreateImagesTable' not found. И composer dump-autoload не помогло.

Мое решение было очень просто:

  • php artisan make:migration create_images_table --create=images
  • composer dump-autoload
  • Тогда я получил: SQLSTATE[HY000]: General error: 1 no such table: images (SQL: drop table "images")
  • поэтому в sqlite я набрал: CREATE TABLE `images` ( ... > `id` INTEGER ... > );
  • И затем php artisan migrate:reset
  • Теперь я снова счастлив.

Ответ 11

Если мастер не работает вообще и продолжает бросать вам это сообщение независимо от команды, которую вы даете, удалите файл config.php из папки bootstrap/cache.

После этого снова запустите

php artisan config:cache