Класс смертельной ошибки 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, если это может быть связано. Что-нибудь еще я должен искать?
Ответы
Ответ 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