我在laravel 5.3中创建了一些迁移文件。然后我做了迁移命令。之后我在一个theese迁移文件中添加了一些列到我的表中,然后我删除了一个迁移文件...然后我运行php artisan migrate:refresh然后我收到此错误: 此错误来自我删除的迁移文件。似乎迁移:刷新仍然需要它。那么如何解决这个错误......?
提前致谢.. :))
答案 0 :(得分:1)
我最初也遇到了这个问题,但意识到这就是我实现CLI(命令行界面)迁移命令的方式。请阅读以下内容。
当您创建迁移文件然后运行php artisan migrate时,在新的空数据库上会发生一些事情:
创建迁移表以存储和跟踪迁移文件目录中数据库 AND 中的迁移。
触发迁移文件的“UP”方法,并处理方法中的任何逻辑。在大多数情况下,通常会使用Schema类在数据库中存储表。
=============================================== ==========================
现在,当你运行'php artisan migrate:refresh'命令时,会发生一些事情。
系统根据迁移表中存储的内容检查数据库的表,以查看表是否存在。
它将彻底梳理数据库并清空所有数据的所有表格。
然后,它将使用迁移表中存储的信息来检查每个表的迁移类的“down”方法可能需要处理的代码。
在大多数情况下,它通常会在属于迁移表中列出的表的特定类的“down”方法中触发“dropIfExists”方法。
这是您的错误发生的地方
如果迁移表中列出了迁移类,系统会检查该类是否存在于数据库/迁移目录中,并且它不存在?您通常会得到某种错误,以某种方式引用丢失的表。这取决于该表与其他所有内容的互连方式,或者该表是否甚至列在迁移表中。
解决此问题的方法是确保更新数据库的方式有意义。
如果永久删除迁移文件
清除数据库和迁移表
BEFORE 删除所有迁移文件,执行'php aritsan migrate:rollback'
删除迁移文件。
执行'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