JetBrains Rider执行add migration数据库迁移操作报错求助
问题根因
执行add migration报错是因为App.config中的连接字符串配置不符合.NET框架的配置规范,EF迁移工具无法解析到合法的数据库连接信息。未修改默认配置时操作正常,就是因为默认配置的节点结构符合解析规则。
具体配置错误
你当前写的<connectionStrings>节点下的<add>配置存在3个核心问题:
- 缺失必填的
name属性:迁移工具是通过name属性值匹配对应连接字符串的,没有这个属性无法定位到目标配置项 - 连接参数位置错误:你把Server、Port、Database、账号密码这些连接参数直接写成了
<add>节点的属性,正确逻辑是把所有参数拼接成完整连接串,赋值给<add>节点的connectionString属性 - 未声明数据库提供程序:MySQL连接需要明确指定提供程序,否则工具会默认尝试用SQL Server的驱动连接,必然报错
修复方案
将App.config的配置替换为以下内容即可:
<?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="DefaultConnection" connectionString="Server=127.0.0.1;Port=3306;Database=smartparking;Uid=root;Pwd=1234567;" providerName="MySql.Data.MySqlClient" /> </connectionStrings> </configuration>
后续校验点
- 如果你在DbContext的
OnConfiguring方法中读取连接字符串,要保证代码里读取的key和上面配置的name属性值(这里是DefaultConnection)完全一致 - 如果你项目用的MySQL驱动是
MySqlConnector,把上面配置里的providerName值替换为MySqlConnector - 修改配置后先清理解决方案、重新生成项目,再执行迁移命令即可正常运行
内容的提问来源于stack exchange,提问作者guirms
相关产品推荐
相关产品推荐

