Laravel 4迁移回滚问题

我可以轻松地运行工匠迁移等,但是当我尝试回滚,与迁移:回滚我不断收到此错误,

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}} 

这是一个错误? 或者我应该如何debugging?

也许你已经解决了这个问题。 但是我注意到,由于某种原因,回滚通常需要您首先运行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文件中拉出来,天真地认为这只会影响Web请求。 事实certificate,这也影响了工匠,所以把这条线回来,并运行composer dump-autoload为我解决了这个问题。

最后,如果所有这些都失败了,那么在其中一个支持库中存在一个导致问题的错误,在这种情况下,您可以尝试使用composer update或其一些变化进行composer update 。 不过,我怀疑这很less会成为问题的真正原因。

如果你在windows中,只需在你的terminal/命令行工具中使用composer ,然后执行以下操作:

 composer dump-autoload 

希望能帮助到你!

从我所看到的我猜你已经手动改变了类名。 在错误中你有类名CreateCodesnippetsTable但在你提供的迁移文件(pastebin)中,类名是CreateCodeSnippetsTable (注意片段中的S,我猜这就是你手动改变的)。

如果您检查数据库中的迁移表,您将看到每个迁移的logging。 在创build迁移时,它将以该名称保存在数据库中,并且回滚方法尝试使用数据库中提供的名称读取该文件,在手动更改的情况下,laravel找不到该类并获得错误。

要解决这个问题,您可以撤销更改并尝试回滚或手动编辑数据库中的迁移行,以包含正确的类名。

希望这可以帮助。

在我看来,这个错误没有单一的解决scheme。 我已经尝试了很多build议,但最终这个作品在我的最后。

 COMPOSER=composer.json composer dump-autoload 

在这里输入图像说明

我通过运行来修复它

composer.phar update

从laravel站点下载composer.phar文件,将composer.phar文件放到laravel文件夹的根目录下,然后从terminal进入laravel的根目录,运行composer.phar更新或者直接运行php artisan dump-autoload 。 祝你好运

我面临同样的问题,并找出问题

我创build了一个迁移,用于在PatientReasonOfVisits表中添加新的列date我使用laravel生成器创build迁移类名是

 class AddDateToPatientReasonOfVisitsTable 

确保在创build新的迁移文件后,您需要运行composer dump-autoload以确保该文件在类映射文件中列出

文件名是2014_09_02_214134_add_date_to_patientreasonofvisitstable.php

迁移已成功完成,迁移表中新增了一条logging。 在迁移列中使用文件名

当我回滚迁移我得到了类没有发现exception什么类是没有find这一个

 AddDateToPatientreasonofvisitsTable 

注意:类名称的区别

为什么以及如何解决这个问题,我想当你回滚使用迁移文件名parsing类名称大写和小写字母决定由下划线“_”在文件名

因此在将迁移文件重命名为2014_09_02_214134_add_date_to_patient_reason_of_visits_table.php后,确保在重命名文件后运行composer dump-autoload,类名parsing正确无误

我简单地删除了迁移表,然后运行“php artisan migrate:refresh”

然后迁移都能够执行,不知道如果这是最好的方法,但它为我工作。

我在晒太阳5,

祝你好运