如何在laravel 5.3中解决未定义的迁移文件错误

时间:2016-08-27 14:31:40

标签: laravel-5.3

我在laravel 5.3中创建了一些迁移文件。然后我做了迁移命令。之后我在一个theese迁移文件中添加了一些列到我的表中,然后我删除了一个迁移文件...然后我运行php artisan migrate:refresh然后我收到此错误: enter image description here 此错误来自我删除的迁移文件。似乎迁移:刷新仍然需要它。那么如何解决这个错误......?

提前致谢.. :))

3 个答案:

答案 0 :(得分:1)

我最初也遇到了这个问题,但意识到这就是我实现CLI(命令行界面)迁移命令的方式。请阅读以下内容。

当您创建迁移文件然后运行php artisan migrate时,在新的空数据库上会发生一些事情:

  1. 创建迁移表以存储和跟踪迁移文件目录中数据库 AND 中的迁移。

  2. 触发迁移文件的“UP”方法,并处理方法中的任何逻辑。在大多数情况下,通常会使用Schema类在数据库中存储表。

  3. =============================================== ==========================

    现在,当你运行'php artisan migrate:refresh'命令时,会发生一些事情。

    1. 系统根据迁移表中存储的内容检查数据库的表,以查看表是否存在。

    2. 它将彻底梳理数据库并清空所有数据的所有表格。

    3. 然后,它将使用迁移表中存储的信息来检查每个表的迁移类的“down”方法可能需要处理的代码。

    4. 在大多数情况下,它通常会在属于迁移表中列出的表的特定类的“down”方法中触发“dropIfExists”方法。

      这是您的错误发生的地方

    5. 如果迁移表中列出了迁移类,系统会检查该类是否存在于数据库/迁移目录中,并且它不存在?您通常会得到某种错误,以某种方式引用丢失的表。这取决于该表与其他所有内容的互连方式,或者该表是否甚至列在迁移表中。

      解决此问题的方法是确保更新数据库的方式有意义。

      如果永久删除迁移文件

      清除数据库和迁移表

      1. BEFORE 删除所有迁移文件,执行'php aritsan migrate:rollback'

      2. 删除迁移文件。

      3. 执行'php artisan migrate'或'migrate:refresh'(如果你真的想要)

      4. 如果更新数据库表

        1. 更新迁移文件后,执行'php artisan migrate'以在新批处理中添加迁移,或执行'或'migrate:refresh'以使更新保持在同一迁移批处理中。

答案 1 :(得分:0)

我最终手动创建了该文件......:v 可能有解决这个问题的好方法...... :)

答案 2 :(得分:0)

删除数据库并重新创建。

然后在命令行中运行此命令

<div id="container"> <!-- Remove space between id and equal sign --> <div class="box red_box">a</div> <div class="box blu_box">b</div> </div>

然后运行此命令

composer dump-autoload