Я могу легко запустить миграцию artisan и т.д., но когда я попытаюсь ее отбросить, с миграцией: откат я продолжаю получать эту ошибку,
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 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 update
или их изменения. Однако я подозреваю, что это редко будет истинной причиной проблемы.
composer.json
. Вы будете знать, что при запуске composer dump-autoload
в главном проекте, но при запуске php artisan dump-autoload
синтаксическая ошибка в composer.json
в вашей рабочей среде не будет предупреждена. Если ваши проекты в рабочей среде работают, cd
в них и попробуйте запустить composer dump-autoload
отдельности.
Если вы находитесь в Windows, просто используйте композитор в своей утилите terminal/command line и выполните следующие действия:
composer dump-autoload
Надеюсь, что это поможет!
Мне кажется, что нет единственного решения этой ошибки. Я пробовал много предложений, но, наконец, это работает в моем конце.
COMPOSER=composer.json composer dump-autoload
Из того, что я вижу, я предполагаю, что вы изменили имя класса вручную.
В ошибке вы имеете имя класса CreateCodesnippetsTable
, но в файле миграции, указанном вами (pastebin), имя класса CreateCodesnippetsTable
(обратите внимание на S в фрагментах, я думаю, это то, что вы изменили вручную).
Если вы проверите таблицу миграций в своей базе данных, вы увидите записи для каждой миграции. Когда вы создаете перенос, он будет сохранен в базе данных с этим именем, и метод отката пытается прочитать файл с именем, указанным в базе данных, в случае, если вы его вручную измените, laravel не может найти класс, и вы получаете ошибка.
Чтобы исправить это, вы можете отменить изменения и попробовать откат или вручную отредактировать строку миграции в своей базе данных, чтобы включить правильное имя класса.
Надеюсь, что это поможет.
Я исправил его, запустив
composer.phar update
загрузите файл composer.phar с сайта laravel и принесите файл composer.phar в корневой каталог папки laravel, затем с терминала зайдите в корневой каталог laravel и запустите обновление composer.phar или просто запустите php artisan дамп-автозагрузку. удачи
i столкнулся с той же проблемой и выяснил проблему
Я создал миграцию для добавления новой даты столбца в таблицу PatientReasonOfVisits Я использовал генераторы laravel когда я создаю миграцию, имя класса было
class AddDateToPatientReasonOfVisitsTable
после создания нового файла миграции вам нужно запустить компоновщик dump-autoload, чтобы убедиться, что файл указан в файле карты классов
имя файла было 2014_09_02_214134_add_date_to_patientreasonofvisitstable.php
миграция выполнена успешно и новая запись была добавлена в таблицу миграции. в столбце миграции используется имя файла
когда я откатываю миграцию я получил класс, не найденный исключение, какой класс не найден этот
AddDateToPatientreasonofvisitsTable
Примечание: разница между именами классов
почему и как я решил эту проблему я думаю, когда u rollback имя класса разрешено с использованием имени файла миграции, которое в таблице миграции столица и маленькие буквы определяются символами подчеркивания "_" в имени файла
поэтому после переименования файла миграции в 2014_09_02_214134_add_date_to_patient_reason_of_visits_table.php и обязательно запустите компоновщик dump-autoload после переименования файла имя класса правильно разрешено без исключения
Я просто удалил таблицу миграции, а затем выполнил команду "php artisan migrate: refresh"
Затем все миграции могли выполняться, но не уверен, что это лучший метод, но он работал у меня.
Я загораю laravel 5,
Удачи.