Я могу легко запустить миграцию ремесленника и т. Д., Но когда я попытаюсь отбросить его назад, с миграцией: откат я продолжаю получать эту ошибку,
c:\xampp\htdocs\laravel>php artisan migrate:rollback {"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class 'CreateCodesnippetsTable' not found","file":"C:\\xampp\\htdocs\\laravel\\vendor\\laravel\\framework\\src\\Illum inate\\Database\\Migrations\\Migrator.php","line":301}}
Это ошибка? или как мне отлаживать это?
Возможно, вы уже решили эту проблему. Но я замечаю, что по какой-то причине откат часто требует, чтобы composer dumpautoload
сначала запускали composer dumpautoload
. Даже если ваша миграция работает.
Я несколько раз боролся с этой проблемой, думаю, теперь могу дать окончательный ответ на решение этой проблемы. Да, большой звонок, который я знаю, но голый со мной …
Первый порт захода, если вы столкнулись с этой проблемой, – это запустить composer dump-autoload
. Это должно привести к обновленной версии файла vendor/composer/autoload_classmap.php
.
Если autoload_classmap.php
не обновляется, у вас может возникнуть проблема с разрешениями, и в этом случае вы можете попробовать sudo composer dump-autoload
.
Однако, если autoload_classmap.php
действительно обновляется, убедитесь, что он содержит запись для вашего класса миграции (в данном случае CreateCodesnippetsTable
). Если для этого класса нет записи, вы должны проверить свой файл composer.json
и убедиться, что папка app/database/migrations
включена в раздел автозагрузки, например:
"autoload": { "classmap": [ "app/controllers", "app/models", "app/database/migrations" ] },
Этот последний бит – это то, что меня задело. В ошибочной попытке оптимизировать вещи я вытащил столько, сколько мог, из моего файла composer.json
, наивно полагая, что это повлияет только на веб-запросы. Оказывается, это повлияло и на Artisan, поэтому, вернув эту строку и запустив composer dump-autoload
для компоновщика, я composer dump-autoload
проблему для меня.
Наконец, если все это не удается, возможно, есть ошибка в одной из поддерживающих библиотек, которые вызывают проблему, и в этом случае вы можете попробовать обновить с использованием composer update
или некоторые изменения. Однако я подозреваю, что это редко будет истинной причиной проблемы.
Если вы находитесь в окнах, просто используйте композитор в своей утилите terminal / command line и выполните следующие действия:
composer dump-autoload
Надеюсь, поможет!
Из того, что я вижу, я предполагаю, что вы изменили имя класса вручную. В ошибке у вас есть имя класса CreateCodesnippetsTable
но в файле миграции, указанном вами (pastebin), имя класса – CreateCodeSnippetsTable
(обратите внимание на S в фрагментах, я думаю, это то, что вы изменили вручную).
Если вы проверите таблицу миграций в своей базе данных, вы увидите записи для каждой миграции. Когда вы создаете перенос, он будет сохранен в базе данных с этим именем, и метод отката пытается прочитать файл с именем, указанным в базе данных, в случае, если вы его вручную измените, laravel не может найти класс, и вы получаете Ошибка.
Чтобы исправить это, вы можете отменить изменения и попробовать откат или вручную отредактировать строку миграции в своей базе данных, чтобы включить правильное имя класса.
Надеюсь это поможет.
Мне кажется, что нет единственного решения этой ошибки. Я попробовал много предложений, но, наконец, это работает в моем конце.
COMPOSER=composer.json composer dump-autoload
Я исправил его, запустив
composer.phar update
загрузите файл composer.phar с сайта laravel и принесите файл composer.phar в корневой каталог папки laravel, затем с терминала зайдите в корневой каталог laravel и запустите обновление composer.phar или просто запустите php artisan dump-autoload , удачи
я столкнулся с той же проблемой и выяснил проблему
Я создал миграцию для добавления новой даты столбца в таблице PatientReasonOfVisits. Я использовал генераторы laravel, когда создаю миграцию, имя класса было
class AddDateToPatientReasonOfVisitsTable
После создания нового файла миграции вам нужно запустить компоновщик dump-autoload, чтобы убедиться, что файл указан в файле карты классов
имя файла составило 2014_09_02_214134_add_date_to_patientreasonofvisitstable.php
миграция выполнена успешно, и новая запись была добавлена в таблицу миграции. в столбце миграции используется имя файла
когда я откатываю миграцию, я получил класс, не найденный исключение, какой класс не найден этот
AddDateToPatientreasonofvisitsTable
Примечание: разница между именами классов
почему и как я решил эту проблему, я предполагаю, что когда u откатывает имя класса, разрешенное с использованием имени файла миграции, которое в таблице миграции является столицей и маленькими буквами, определяется символом подчеркивания «_» в имени файла
поэтому после переименования файла миграции в 2014_09_02_214134_add_date_to_patient_reason_of_visits_table.php и уверенного запуска компоновщика dump-autoload после переименования файла имя класса разрешилось правильно, без исключения
Я просто удалил таблицу миграции, а затем выполнил команду «php artisan migrate: refresh»
Тогда все миграции были способны выполнить, не уверен, что это лучший метод, но он работал для меня.
Я загораю laravel 5,
Удачи