Laravel 迁移未定义索引

Posted

技术标签:

【中文标题】Laravel 迁移未定义索引【英文标题】:Laravel migration undefined index 【发布时间】:2017-01-29 17:27:43 【问题描述】:

我正在使用 Laravel 5.3。我删除了我的一个迁移文件名称“功能”以及与之相关的所有内容,例如其他表中的 id 等。然后我手动从数据库中删除了该表。但是现在当我在运行命令“php artisan migrate:refresh”。它显示错误异常与“未定义索引:***_create_features_table”。当我运行“php artisan migrate”时。它显示它成功并且所有表都成功出现在数据库中。但是当我运行迁移时:刷新所有表都会消失。我应该怎么做才能完全删除迁移文件?

【问题讨论】:

你试过截断迁移表吗? no. 你能提一下我想怎么做吗? 在您的数据库中,您有一个表名migrations。那里保存了所有迁移信息。首先删除所有记录。之后运行php artisan migrate。这可能会对您有所帮助 尝试了您的解决方案..现在它甚至没有使用迁移命令 如果问题仍然存在。请按照以下步骤操作。 【参考方案1】:

在迁移中只需添加 $table->index(['column Name 1',''column Name 1']);

【讨论】:

【参考方案2】:

在我的案例中,我忘记在运行 Infyomlabs 来创建脚手架之前进行 Laravel 迁移! 所以“未定义索引”的原因之一是表还没有。

【讨论】:

【参考方案3】:

如果您有 Undefined index 错误并且您的迁移是使用 --path 选项进行的,则添加到您的 ModuleServiceProvier boot() 方法:

$this->loadMigrationsFrom(base_path('database/migrations/directory-name'));

【讨论】:

【参考方案4】:

首先尝试检查您是否进行了正确的迁移

php artisan migrate:status

然后你可以尝试类似的东西

php artisan migrate:refresh --step=1

然后再次检查状态。

【讨论】:

【参考方案5】:

这就是我所做的。我从数据库中清除了所有数据,包括所有表,然后运行“php artisan migrate”..这就是我让它工作的方式..但我正在寻找一个更好的解决方案,它不会需要从数据库中删除所有内容。

【讨论】:

composer dump-autoload 将纠正您的所有问题。所以不要惊慌。如果您担心,请先备份您的项目。在运行上述脚本之前。 清除数据库表对我有用。在 Composer 中转储自动加载没有任何效果。【参考方案6】:

试试这个。

先手动删除app/database/migrations/my_migration_file_name.php下的迁移文件

重置作曲家自动加载文件:composer dump-autoload

修改您的数据库:从migrations table 中删除最后一个条目

【讨论】:

感谢 Manish 的咨询。我认为这个程序会起作用。下次我会完成这个。 谢谢这位兄弟 使用 sequel pro 从迁移表中删除行,这就像一个魅力。谢谢!

以上是关于Laravel 迁移未定义索引的主要内容,如果未能解决你的问题,请参考以下文章

未定义索引(Laravel)

未定义的索引,无法获取列 - Laravel

Laravel PackageManifest.php:未定义索引:名称

使用新模型和保护的 Laravel 身份验证失败:未定义索引:模型

laravel 数据库连接返回未定义的索引错误

Laravel:未定义的索引 - 数组键不存在