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 文件

Lumen (Laravel) Eloquent php artisan make:model 未定义

oracle 日志文件丢了,怎么解决? 开启了归档日志!

Artisan 命令

laravel artisan 常用命令

Git未提交代码,切换分支后,代码丢失,怎么找回