【问题标题】:Migrations in Laravel 5.5: Cannot declare class because the name is already in useLaravel 5.5 中的迁移:无法声明类,因为该名称已在使用中
【发布时间】:2018-06-28 20:47:13
【问题描述】:

在 Laravel 中运行迁移时出现错误:

PHP 致命错误:无法声明类 UpdateEnquiriesTable,因为该名称已在 /var/www/project/database/migrations/2018_01_17_160335_update_enquiries_table.php 在第 33 行

做了一些研究,我发现每个迁移文件都需要一个唯一的类名(我不记得之前提到过,但可能是我)。

根据另一个问题,推荐给change the name of one of the classes

但后来有人推荐deleting the conflicting migrations

哪个是首选?假设其中任何一个都有效。

【问题讨论】:

    标签: php laravel-5 laravel-artisan


    【解决方案1】:

    请尝试以下步骤:

    1. 删除所有表(清除数据库)
    2. 验证您是否确实没有重复的迁移类
    3. 验证所有迁移的文件名上是否包含日期和时间
    4. 运行composer dumpautoload
    5. 运行php artisan migrate

    【讨论】:

    • 请分享更多细节。这种迁移应该如何与现有应用程序一起工作?删除所有表(以及这些表中的所有数据!)看起来不像是你应该做的事情
    【解决方案2】:

    只需删除此文件并重新键入迁移。 该表已在您的迁移表中注册,因此即使没有此文件也会创建此表

    【讨论】:

      【解决方案3】:

      您可以更改其中一个类名,然后手动更新它在迁移表中的条目以保留您的数据库状态。如果您删除冲突的迁移,您可能会在后续迁移和/或回滚时遇到问题,因为相关类不再存在。

      【讨论】:

      • 所以,为了清楚起见,我会更改: 1. 文件名; 2. 类名; 3.和migrations表中的对应行,对吗?
      • 没错。这不是生产数据库吗?
      • 这将在开发中,但我在暂存时遇到了问题。因此,如果可行,我将提交更改,将它们推送到暂存,进行相同的表更改,然后再次运行迁移。
      • 是的,应该适合你。我不得不在实时数据库上进行类似的操作。
      猜你喜欢
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      • 2021-08-17
      • 2020-06-21
      • 2021-06-13
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多