背景

最近在研发一个新的迭代,会给项目添加新的表设计,公司采用flyway数据库版本管理工具和C#的dotnet-ef 数据迁移工具对mysql表进行设计与管理.

问题引入

在表设计完成之后,为了检查表设计是否存在问题,所以我习惯性的执行了以下命令

dotnet build

执行完成之后,也没有错误,说明表设计中的各种引用是正确的
在这里插入图片描述

执行完成之后,准备执行dotnet -ef migrations add 命令,准备生成一个数据库设计的版本,但是执行后出现了以下错误
在这里插入图片描述
提示的是dotnet ef 命令找不到,所以根据某应搜索到解决方案,说的是执行安装命令

dotent tool install --global dotnet-ef

该命令会根据当前的版本安装一个可用的dotnet-ef版本,
但是安装完了之后,我以为终于可以了,赶紧生成表设计,写完CURD接口,早点下班吧。所以我又满怀期待的执行dotnet -ef migrations add 命令,问题接踵而至(⊙﹏⊙)
在这里插入图片描述
就这个问题,卡了我半个小时

问题解决

根据报错提示,说的是无法找到**.NetCore** 2.1.30版本,只在当前环境中找到了下列版本

  3.1.32 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  5.0.9 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  5.0.17 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  6.0.18 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

并且给出了,让我去下载对应的版本,并且安装,接着我就点开了下载链接
.NetCore
在这里插入图片描述
下载之后,马上安装,又执行生成数据库版本命令,还是原来的错误,到这里我就头大了,不是按要求安装了吗。为啥还是不行呢?

多个方向解决

询问Chatgpt

在这里插入图片描述
回答的和某应的大差不差,都是让我安装或者更新 dotnet-ef
解决问题失败

安装工具的缘故

由于我使用的是dotnet tool 来安装 dotnet-ef 命令,而 .NETcore是通过安装包的形式安装的,两种方式安装不同,导致无法以相同的方式找到包,所以我首先卸载了根据提示安装的**.NetCore**版本,转而使用 dotnet tool 安装 .NeetCore

在这里插入图片描述
在这里插入图片描述
最后找不到包,这种方案失败

版本兼容性问题

在这之前使用该命令都是正常的,突然想起由于我在上个月由于调试Java源码的时候安装了 Visual Stadio 这个IDE工具,它在安装时会自动安装**.NetCore环境,所以最后的方案就是,卸载这个电脑的.Net**环境,重新安装。随后进入Windows的卸载界面,我好像突然明白了什么。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结合这三张截图,在执行命令的过程中提示了我找不到对应版本的**.NetCore**环境,只找到下面的几个版本

 3.1.32 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  5.0.9 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  5.0.17 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  6.0.18 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

但是我又根据提示安装了2.1.30版本,为什么没有在这个目录下出现对应的目录呢?
最后我发现,原来是缺少SDK,而不是runtime环境
在这里插入图片描述
最后我去对应的版本页面,发现这个页面包含了两种类型的安装,runtime和SDK
在这里插入图片描述

最后下载SDK,执行安装,问题终于解决,完结洒花

总结

问题出现的情景可能是多方面,多角度的,有时候换个角度,或者换个方向思考,说不定就柳暗花明了。

Logo

数据库是今天社会发展不可缺少的重要技术,它可以把大量的信息进行有序的存储和管理,为企业的数据处理提供了强大的保障。

更多推荐