SqlSugar.SqlSugarException: 中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接 返回
xiaodong 发布于2025/8/23
本地跑的好好的,发布到线上,直接不行了,只要调用就会报错,线上线下MySQL版本一模一样,这是咋回事?bug吗?
SqlSugar.SqlSugarException: 中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:“MySqlConnector.Core.ConnectionPool”的类型初始值设定项引发异常。DbType="MySqlConnector";ConfigId="".
English Message : Connection open error . “MySqlConnector.Core.ConnectionPool”的类型初始值设定项引发异常。DbType="MySqlConnector";ConfigId=""
在 SqlSugar.Check.Exception(Boolean isException, String message, String[] args)
在 SqlSugar.AdoProvider.CheckConnection()
在 SqlSugar.MySqlConnector.MySqlProvider.GetCommand(String sql, SugarParameter[] parameters)
在 SqlSugar.AdoProvider.GetDataReader(String sql, SugarParameter[] parameters)
在 SqlSugar.QueryableProvider`1.GetData[TResult](KeyValuePair`2 sqlObj)
在 SqlSugar.QueryableProvider`1._ToList[TResult]()
在 SqlSugar.QueryableProvider`1.ToList()
在 SqlSugar.QueryableProvider`1.First()
热忱回答(10)
-
fate sta VIP0
2025/8/23是不是字符串没有读到
0 回复 -
fate sta VIP0
2025/8/23你是.NET framework还是.NET CORE ,按下面.NET版本配置
0 回复 -
fate sta VIP0
2025/8/23
0 回复 -
xiaodong VIP0
2025/8/23@fate sta:我的是framework版本的webapi项目,启动文件里边我添加了:
InstanceFactory.CustomAssemblies = new System.Reflection.Assembly[]
{
typeof(SqlSugar.MySqlConnector.MySqlProvider).Assembly
};
发现还是不行:
public class MysqlGrowingDbContext<T> where T : class, new()
{
public SqlSugarClient Db;
public static MysqlGrowingDbContext<T> OpDB()
{
MysqlGrowingDbContext<T> dbcontext_t = new MysqlGrowingDbContext<T>();
var myssqlConnString = ConfigurationManager.ConnectionStrings["MysqlConnectionString"].ConnectionString;
dbcontext_t.Db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = myssqlConnString,
DbType = DbType.MySqlConnector,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute
});
// 输出sql
/*dbcontext_t.Db.Aop.OnLogExecuting = (sql, pars) =>
{
Console.WriteLine(sql + "\r\n" +
dbcontext_t.Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
Console.WriteLine();
};*/
return dbcontext_t;
}
public SimpleClient<T> CurrentDb { get { return new SimpleClient<T>(Db); } }
}
0 回复 -
xiaodong VIP0
2025/8/23@fate sta:本地运行一个月了,也没出现这问题。而且,同样的连接字符串,我另一个.net core项目正常启动,说明字符串是没问题的。
0 回复 -
xiaodong VIP0
2025/8/23@fate sta:我刚刚输出了日志,连接字符串正常读取到了,这个也没问题。
0 回复 -
xiaodong VIP0
2025/8/23@fate sta:而且我让开发人员把线上数据库端口打开,本地调用线上,连接也没问题,但是放到windows服务器上,调用就不行了。
0 回复 -
fate sta VIP0
2025/8/23var conn = new MySqlConnection(db.CurrentConnectionConfig.ConnectionString); conn.Open(); conn.Clone(); db.Open(); db.Close();
这行代码进行测试 。这个代码能跑说明你字符串配置正确
0 回复 -
xiaodong VIP0
2025/8/23@fate sta:解决了,我发现线上配置文件里边缺少了:System.Memory和System.Runtime.CompilerServices.Unsafe这两个配置,导致一直无法连接MySQL。但是我在引入sqlsugar相关dll之前,配置文件中已经有了这两个配置了,而线上配置文件是没有的,真是奇怪。
0 回复 -
xiaodong VIP0
2025/8/23@fate sta:辛苦一下把这个问题改为已解决吧,感谢!
0 回复