我在Laravel 7中开发了一个webapp,我创建了一个迁移来向一个表中添加一些新的列。然后,我添加了代码来处理这些列。一切都很好。
但是,当我将新代码合并到一个新分支并试图运行迁移以添加它们所需的字段时,我收到了一条SQL错误消息,告诉我缺少了一些列。
运行php的似乎会迁移(或任何其他手工命令),将执行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...')对于我来说,运行php迁移的基本上需要迁移已经完成了,这听起来有点奇怪。在运行迁移时,是否有任何方法可以避免执行web.php文件,或者可以推荐其他解决方案来解决这个问题?
谢谢你,W.
发布于 2022-03-03 12:36:47
最后,通过将迁移和代码分离为两个独立的分支并分别提交,解决了这个问题。对于我来说,这比为这样一个时间问题修改代码更低的风险。
发布于 2022-03-01 07:30:14
如果在ServiceProvider上运行查询,则需要检查应用程序是否运行在ServiceProvider中的控制台上
if(App::runningInConsole())
{
// app is running in console
}https://stackoverflow.com/questions/71286276
复制相似问题