如何解决 laravel 5.3 中的未定义迁移文件错误
How to solve undefined migration files error in laravel 5.3
我在 laravel 5.3 中创建了一些迁移文件。然后我做了迁移命令。之后我在一个theese迁移文件中向我的table添加了一些列然后我删除了一个迁移文件......然后我运行 php artisan migrate:refresh 然后我得到了这个错误:
此错误来自我删除的迁移文件。看来migrate:refresh还是需要的。那么我该如何解决这个错误...?
提前致谢..:)
我最终手动创建了那个文件...:v
可能有解决这个问题的好方法...:)
我最初也遇到了这个问题,但我意识到这是我实现 CLI(命令行界面)迁移命令的方式。请阅读下文。
当您创建迁移文件然后 运行 php artisan migrate 时,新的空数据库会发生一些事情:
迁移 table 已创建,用于存储和跟踪数据库中的迁移 AND 在迁移文件目录中。
迁移文件的 "UP" 方法被触发并处理该方法中的任何逻辑。在大多数情况下,通常会使用架构 class 在数据库中存储 table。
============================================= ============================
现在,当您 运行 'php artisan migrate:refresh' 命令时,会发生一些事情。
系统根据迁移 table 中存储的内容检查数据库的 table 以查看 table(s) 是否存在。
会彻底梳理数据库,清空所有tables的所有数据。
然后它将使用存储在迁移 table 中的信息来检查每个 table 的迁移 class 的 "down" 方法是什么有可能需要处理的编码。
在大多数情况下,它通常会在属于 table 中列出的特定 class 的 "down" 方法中触发 "dropIfExists" 方法迁移 table.
这里是你的错误发生的地方
如果迁移 table 中列出了迁移 class,系统会检查 class 是否存在于 database/migration 目录中,但它不存在?您通常会收到某种错误,以某种方式引用缺少的 table。这取决于 table 与其他一切的相互关联程度,或者 table 是否甚至在迁移 table 中列出。
解决此问题的方法是确保更新数据库的方式合理。
如果永久删除迁移文件
清除数据库和迁移table
在删除任何迁移文件之前,执行'php aritsan migrate:rollback'
删除迁移文件。
执行'php artisan migrate'或'migrate:refresh'(如果你真的想)
如果更新数据库table
- 更新迁移文件后,执行 'php artisan migrate' 以在新批次中添加迁移或 '或 'migrate:refresh' 以保持更新不变迁移批处理。
删除数据库并重新创建。
然后运行命令行中的这个命令
composer dump-autoload
然后运行这个命令
php artisan migrate
我在 laravel 5.3 中创建了一些迁移文件。然后我做了迁移命令。之后我在一个theese迁移文件中向我的table添加了一些列然后我删除了一个迁移文件......然后我运行 php artisan migrate:refresh 然后我得到了这个错误:
提前致谢..:)
我最终手动创建了那个文件...:v 可能有解决这个问题的好方法...:)
我最初也遇到了这个问题,但我意识到这是我实现 CLI(命令行界面)迁移命令的方式。请阅读下文。
当您创建迁移文件然后 运行 php artisan migrate 时,新的空数据库会发生一些事情:
迁移 table 已创建,用于存储和跟踪数据库中的迁移 AND 在迁移文件目录中。
迁移文件的 "UP" 方法被触发并处理该方法中的任何逻辑。在大多数情况下,通常会使用架构 class 在数据库中存储 table。
============================================= ============================
现在,当您 运行 'php artisan migrate:refresh' 命令时,会发生一些事情。
系统根据迁移 table 中存储的内容检查数据库的 table 以查看 table(s) 是否存在。
会彻底梳理数据库,清空所有tables的所有数据。
然后它将使用存储在迁移 table 中的信息来检查每个 table 的迁移 class 的 "down" 方法是什么有可能需要处理的编码。
在大多数情况下,它通常会在属于 table 中列出的特定 class 的 "down" 方法中触发 "dropIfExists" 方法迁移 table.
这里是你的错误发生的地方
如果迁移 table 中列出了迁移 class,系统会检查 class 是否存在于 database/migration 目录中,但它不存在?您通常会收到某种错误,以某种方式引用缺少的 table。这取决于 table 与其他一切的相互关联程度,或者 table 是否甚至在迁移 table 中列出。
解决此问题的方法是确保更新数据库的方式合理。
如果永久删除迁移文件
清除数据库和迁移table
在删除任何迁移文件之前,执行'php aritsan migrate:rollback'
删除迁移文件。
执行'php artisan migrate'或'migrate:refresh'(如果你真的想)
如果更新数据库table
- 更新迁移文件后,执行 'php artisan migrate' 以在新批次中添加迁移或 '或 'migrate:refresh' 以保持更新不变迁移批处理。
删除数据库并重新创建。
然后运行命令行中的这个命令
composer dump-autoload
然后运行这个命令
php artisan migrate