Laravel 7 artisan migrate 崩溃,因为数据库尚未迁移

Laravel 7 artisan migrate crashes because database not yet migrated

我在 Laravel 7 开发一个网络应用程序。我创建了一个迁移以将一些新列添加到 table。然后我添加了代码来处理这些列。一切顺利。

然而,当我将新代码合并到一个新分支并尝试 运行 迁移以添加他们需要的字段时,我收到一条 SQL 错误消息,告诉我缺少某些列.

运行宁 php artisan migrate(或任何其他 artisan 命令)似乎 执行 web.php 文件已经 引用(间接)到新列 ,但新列 还不存在,导致此错误消息。请查看下面显示此内容的堆栈跟踪:

[2022-02-27 16:28:08] local.ERROR: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'LARAVEL_LOCALE' in 'field list' (SQL: select `ID`, `LARAVEL_LOCALE` from `LANGUAGE`) {"exception":"[object] (Illuminate\Database\QueryException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'LARAVEL_LOCALE' in 'field list' (SQL: select `ID`, `LARAVEL_LOCALE` from `LANGUAGE`) at /Applications/MAMP/htdocs/gng2/vendor/laravel/framework/src/Illuminate/Database/Connection.php:671)

...

#6 /Applications/MAMP/htdocs/gng2/app/GNG/GNGLangDAO.php(24): Illuminate\Database\Query\Builder->get()
#7 /Applications/MAMP/htdocs/gng2/routes/web.php(26): App\GNG\GNGLangDAO->loadAllLocales()
#8 /Applications/MAMP/htdocs/gng2/vendor/laravel/framework/src/Illuminate/Routing/RouteFileRegistrar.php(35): require('/Applications/M...')

我觉得 运行ning php artisan migrate 基本上要求迁移已经完成,这对我来说有点奇怪。有什么方法可以避免在 运行 迁移时执行 web.php 文件,或者您可以推荐任何其他解决问题的方法吗?

谢谢, W.

如果您 运行 查询 Service Provider,那么您需要在 ServiceProvider

的控制台上检查应用 运行
if(App::runningInConsole())
{
  // app is running in console
}

最后我解决了这个问题,将迁移和代码分离到两个独立的分支并分别提交。这对我来说比为这样一个单一时间问题修改代码的风险更低。