【问题标题】:Laravel migrations messed upLaravel 迁移搞砸了
【发布时间】:2014-09-18 17:22:45
【问题描述】:

我搞砸了我的 Laravel 迁移,我收到了 PHP 致命错误:运行时无法重新声明类

php artisan migrate --path="workbench/fefe/feeds2go/src/migrations"

我一直在删除迁移文件并手动删除表并使用php artisan migrate:make 重新创建但仍然相同。

如何解决迁移问题?

【问题讨论】:

    标签: laravel-4 database-migration command-line-interface


    【解决方案1】:

    您需要检查所有迁移类文件并检查是否有重复的类名。

    【讨论】:

    【解决方案2】:

    “不能重新声明类”发生在类名至少出现时 2次。

    最简单的方法是运行composer installcomposer.phar dump-autoload。它将为您生成警告信息,以识别哪个类是重复的。然后,只需删除声明两次的类。

    这是我运行 php artisan migrate 后遇到的错误

    [Symfony\Component\Debug\Exception\FatalErrorException]   
    Cannot redeclare class CreateKidTimeslotTable
    

    因此,我使用composer.phar dump-autoload 来识别错误。

     Warning: Ambiguous class resolution, "CreateKidTimeslotTable" was found in both "laravel/database/migrations/2016_05_23_024341_create_kid_timeslot_table.php" and "laravel/database/migrations/2016_08_24_022635_create_kid_time_slot_table.php", the first will be used.
    

    删除不再需要的重复表。

    【讨论】:

      【解决方案3】:

      您需要从项目的迁移目录中手动删除该迁移文件,并从数据库中的迁移表中删除它的条目,或者您可以运行php artisan migrate:refresh,但它会删除您的所有表数据,因此还要添加与php artisan migrate:refresh --step=n 一起迈出的一步

      【讨论】:

        【解决方案4】:

        这是一个较晚的答案,但这可能会解决您的问题。

        1. 转到app/storage/migrations
        2. 删除导致错误的迁移文件(您也可以删除其中存储的所有内容)。
        3. 完成。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多