Se você está recebendo o erro class not found ao executar o comando php artisan migrate:rollback em um projeto com o framework Laravel, este artigo mostra como resolver o erro e executar o rollback.

Migrations

Ao trabalhar com migrations, as migrações de bancos de dados no Laravel, principalmente na fase de desenvolvimento inicial de um projeto, usa-se de frequentemente a execução de migrações com o comando php artisan migrate.

Também é comum retroceder as migrações para realizar acertos nos scripts de migration sem a necessidade de criar novas porções de código para alteração de tabelas, sendo assim o retorno das migrações para melhorias na estrutura do banco de dados é geito com o comando php artisan migrate:rollback.

Erro class not found ao executar rollback

Exatamente com o retorno de migrações: php artisan migrate:rollback, a exceção de erro é lançada, infelizmente quando acontece uma vez, acaba acontecendo com uma frequência irritante.

Em geral essa exceção e a mensagem de erro apresentam a seguinte pilha de mensagens no console:

artisan migrate:rollback

PHP Fatal error:  Class 'CreateAlunosTable' not found in /var/www/coletor/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php on line 328
PHP Stack trace:
PHP   1. {main}() /var/www/coletor/artisan:0
PHP   2. Illuminate\Foundation\Console\Kernel->handle() /var/www/coletor/artisan:36
PHP   3. Symfony\Component\Console\Application->run() /var/www/coletor/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:94
PHP   4. Symfony\Component\Console\Application->doRun() /var/www/coletor/vendor/symfony/console/Symfony/Component/Console/Application.php:126
PHP   5. Symfony\Component\Console\Application->doRunCommand() /var/www/coletor/vendor/symfony/console/Symfony/Component/Console/Application.php:195
PHP   6. Illuminate\Console\Command->run() /var/www/coletor/vendor/symfony/console/Symfony/Component/Console/Application.php:874
PHP   7. Symfony\Component\Console\Command\Command->run() /var/www/coletor/vendor/laravel/framework/src/Illuminate/Console/Command.php:101
PHP   8. Illuminate\Console\Command->execute() /var/www/coletor/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:257
PHP   9. Illuminate\Container\Container->call() /var/www/coletor/vendor/laravel/framework/src/Illuminate/Console/Command.php:115
PHP  10. call_user_func_array() /var/www/coletor/vendor/laravel/framework/src/Illuminate/Container/Container.php:523
PHP  11. Illuminate\Database\Console\Migrations\RollbackCommand->fire() /var/www/coletor/vendor/laravel/framework/src/Illuminate/Container/Container.php:523
PHP  12. Illuminate\Database\Migrations\Migrator->rollback() /var/www/coletor/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/RollbackCommand.php:59
PHP  13. Illuminate\Database\Migrations\Migrator->runDown() /var/www/coletor/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:172
PHP  14. Illuminate\Database\Migrations\Migrator->resolve() /var/www/coletor/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:219
                                                             
  [Symfony\Component\Debug\Exception\FatalErrorException]  
  Class 'CreateAlunosTable' not found

Corrigindo a exceção do php artisan migrate:rollback

A correção deste pequeno entrave é muito simples, e muito corriqueira no dia-a-dia de desenvolvimento com Laravel e os autoloadings do PSR-4 criados e organizados pelo Composer.

A causa na maioria das vezes é a falta de atualização do arquivo de autoload gerado pelo Composer. Por diversos motivos isto pode acontecer.

Para corrigir, execute o dump autoloading do composer na linha de comando do terminal no diretório raiz do seu projeto:

composer dump-autoload

Caso o problema persista, primeiro limpe o cache de compilação gerado pelo dump anterior e executar novamente o comando:

php artisan clear-compiled
composer dump-autoload

Se ainda assim o cache compilado não for atualizado, pode ser necessário excluir manualmente o arquivo vendor/compiled.php e então executar os passos acima novamente.

php artisan migrate:rollback sem erros

Após as atualizações do autoload e limpezas de cache realizadas, o resultado esperado:

php artisan migrate:rollback

Rolled back: 2018_05_14_184235_create_alunos_uepg_table
Rolled back: 2018_05_13_184235_create_convenios_table
Rolled back: 2018_05_12_184235_create_pais_table