Laravel 4迁移回滚问题

Dex*_*xty 71 php laravel

我可以轻松地运行artisan migrate等,但是当我尝试回滚时,使用migration:rollback我不断收到此错误,

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}}
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?或者我该如何调试呢?

Der*_*ola 177

也许你已经解决了这个问题.但我注意到,由于某种原因,回滚通常需要您先运行composer dumpautoload.即使你的迁移工作.

  • 你忽略了'天才.让我狐狸了一个小时. (5认同)
  • 文档缺乏这一点.(http://laravel.com/docs/migrations#rolling-back-migrations) (2认同)
  • 救了我的时间:) (2认同)

Jam*_*esG 37

刚刚解决了这个问题几天,我想我现在可以提供解决这个问题的明确答案.是的,我知道的大电话,但请耐心等待.

如果遇到此问题,第一个调用端口是运行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"
    ]
},
Run Code Online (Sandbox Code Playgroud)

最后一点是为我搞砸的东西.在错误的尝试优化事情的过程中,我尽可能多地从composer.json文件中删除,天真地认为这只会影响Web请求.事实证明这也影响了Artisan,所以把这条线重新安装并运行composer dump-autoload为我解决了问题.

最后,如果所有失败,那么可能是其中一个支持库中存在导致问题的错误,在这种情况下,您可以尝试使用更新composer update或其中的一些变体.但是,我怀疑这很少是问题的真正原因.

  • 缺少自动加载更改也可能意味着`composer.json`上的语法错误.你会知道在你的主项目上运行`composer dump-autoload`时,但是当运行`php artisan dump-autoload`时,工作台中`composer.json`的语法错误将不会被警告.如果您的工作台项目正在执行,请执行"cd"并尝试单独运行`composer dump-autoload`. (2认同)

bmn*_*ali 13

如果您在Windows中,只需在终端/命令行实用程序中使用composer,然后执行以下操作:

composer dump-autoload
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!


Alt*_*rim 8

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

如果检查数据库中的迁移表,则会看到每次迁移的记录.当您创建迁移时,它将使用该名称保存在数据库中,并且rollback方法尝试使用数据库中提供的名称读取文件,如果您手动更改它,laravel无法找到该类,您将获得错误.

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

希望这可以帮助.


Ahm*_*rif 8

在我看来,这个错误没有单一的解决方案.我已经尝试了很多建议,但最后这个建议在我的最后工作.

COMPOSER=composer.json composer dump-autoload
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述