Artisan 回滚,未定义索引(文件丢失)
Posted
技术标签:
【中文标题】Artisan 回滚,未定义索引(文件丢失)【英文标题】:Artisan rollback, Undefined index (file missing) 【发布时间】:2018-02-02 14:45:57 【问题描述】:我正在尝试在 Laravel 5.4 中进行回滚。我从迁移文件夹中手动删除了一个文件。现在,当我尝试回滚时,出现错误:
[root@xxx]# php artisan migrate:rollback
[ErrorException]
Undefined index: 2017_08_22_204640_create_tasks_table
该文件是一个测试(带有控制器和视图),但我是 Laravel 新手,不知道手动删除该文件会是个问题。
现在如何修复?
编辑:主要目标是重命名使用迁移创建的表中的列。
我制作了这个迁移文件:
[root@xxx]# php artisan make:migration rename_nombre_generadora_column --table="admin_generadora" --create
Created Migration: 2017_08_24_160600_rename_nombre_generadora_column
但后来我看到表的名字错了,应该是admin_generadoras
。我想创建一个新的迁移文件,但出现此错误:
[root@xxx]# php artisan make:migration rename_nombre_generadora_column --table="admin_generadoras" --create
[InvalidArgumentException]
A RenameNombreGeneradoraColumn migration already exists.
那么我该如何撤消该迁移?
【问题讨论】:
那么您是否需要回滚该迁移?您可以打开数据库并查看迁移表,在该表中您可能会知道发生了什么;如果您删除了迁移文件(已应用),请删除数据库中的相应行(迁移表)。 我将编辑我的问题,我在两件事上遇到了问题 【参考方案1】:在这种情况下,我总是倾向于简单地删除整个数据库并再次运行“正确”迁移。你有种子吧?你有工厂吗?
我复制了我写的一些文字before:
迁移注意事项以及如何正确执行(恕我直言):
-
始终使用迁移来创建和更新数据库架构
如果您是一个单独的开发人员并且没有没有生产环境设置,只需修改迁移并重置数据库(删除所有表)+ 迁移
如果您是团队或已经建立了生产环境,请始终创建新的迁移
不要太在意
down()
方法
Laravel 的创建者和朋友关于迁移的一些材料可以在这个播客http://www.laravelpodcast.com/episodes/68236-episode-53-bigger-better 大约 30 分钟标记。
您现在需要做的是了解深入了解迁移的工作原理!为此,您需要查看迁移表并使用它;玩工匠和迁移相关的命令。请记住,您可以使用 SQL 更新/修改数据库架构(这意味着使用某种数据库客户端,例如 PhpMyAdmin),还可以修改/更新相应的迁移。
【讨论】:
【参考方案2】:--table
标志只是帮助您更快地填写迁移文件。只需进入RenameNombreGeneradoraColumn
文件并将admin_generadora
更改为admin_generadoras
【讨论】:
以上是关于Artisan 回滚,未定义索引(文件丢失)的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - 在部署自定义 Artisan 命令时未部署 composer.json 文件