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,
祝你好运