工匠跳过迁移

Posted

技术标签:

【中文标题】工匠跳过迁移【英文标题】:Artisan skipping migrations 【发布时间】:2018-04-23 20:25:16 【问题描述】:

所以,我刚刚从 Github 拉下了一个 Laravel 5 项目,我之前没有做过任何工作,但我需要设置以添加一个或三个功能。

问题是,我没有该项目的任何数据库表。这应该很容易修复,因为迁移都在正确的文件夹中。

我运行 php artisan migrate,它告诉我其中一个迁移尝试更新不存在的表时出现问题。

问题是,这不是按日期进行的第一次迁移。更早的迁移应该会创建它所说的尚未存在的表。

基本上是这样的:

Migration 1
Migration 2
Migration 3
Migration 4
Migration 5 <--- here's where the error is occurring
Migration 6
etc....

它似乎根本没有在引发错误的迁移之前运行迁移,并且它没有向该架构中的迁移表写入任何内容。

我得到的错误是:

[Illuminate\Database\QueryException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'table1' doesn't exist (SQL: select * from `table1` where `code` = DEFAULT_ADDRESS limit 1)

[PDOException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'table1' doesn't exist

不用说,我有点困惑为什么它会跳过迁移,即使是那些不涉及该表的迁移。

【问题讨论】:

您的数据库中应该有一个“迁移”表,用于存储所有已完成的迁移。看看吧! 我愿意。它没有写任何东西。它甚至没有向另一个模式中的迁移表写入任何内容(我也检查过。) 【参考方案1】:

你应该运行:

php artisan migrate:status

它应该按照迁移的运行顺序向您显示迁移。确保订单有效。如果不是什么东西搞砸了,您可能需要更改文件以获得有效的迁移顺序。

【讨论】:

奇怪。它没有。它只是给了我与上面相同的错误消息。 [Illuminate\Database\QueryException][PDOException]. 所以很可能问题出在其他地方。例如,当您运行php artisan route:list 时,一切正常吗?问题可能出在某些服务提供者或某些构造函数中 完全相同的错误。我现在想知道我是否错过了一些东西,并且在我安装作曲家时没有注意到我错过了它。 看来问题不在于迁移。例如,您可能会在控制器构造函数中运行一些查询,这可能是一个问题,但如果没有完整的代码很难说,这可能不适合 SO 调查。

以上是关于工匠跳过迁移的主要内容,如果未能解决你的问题,请参考以下文章

Laravel工匠迁移不创建新表

Php工匠迁移失败Laravel [重复]

PHP工匠迁移错误

Laravel 5.7 工匠迁移

工匠迁移:laravel 5.3 中的回滚错误

Laravel 工匠迁移失败