SqlSugar.SqlSugarException: 中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接 返回

SqlSugar 处理完成
10 673

本地跑的好好的,发布到线上,直接不行了,只要调用就会报错,线上线下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 fate sta VIP0
    2025/8/23

    是不是字符串没有读到

    0 回复
  • fate sta fate sta VIP0
    2025/8/23

    你是.NET framework还是.NET CORE ,按下面.NET版本配置

    0 回复
  • fate sta fate sta VIP0
    2025/8/23

    image.png

    0 回复
  • xiaodong 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 xiaodong VIP0
    2025/8/23

    @fate sta:本地运行一个月了,也没出现这问题。而且,同样的连接字符串,我另一个.net core项目正常启动,说明字符串是没问题的。

    0 回复
  • xiaodong xiaodong VIP0
    2025/8/23

    @fate sta:我刚刚输出了日志,连接字符串正常读取到了,这个也没问题。

    0 回复
  • xiaodong xiaodong VIP0
    2025/8/23

    @fate sta:而且我让开发人员把线上数据库端口打开,本地调用线上,连接也没问题,但是放到windows服务器上,调用就不行了。

    0 回复
  • fate sta fate sta VIP0
    2025/8/23
    var conn = new MySqlConnection(db.CurrentConnectionConfig.ConnectionString);
    conn.Open();
    conn.Clone();
    db.Open();
    db.Close();

    这行代码进行测试 。这个代码能跑说明你字符串配置正确

    0 回复
  • xiaodong xiaodong VIP0
    2025/8/23

    @fate sta:解决了,我发现线上配置文件里边缺少了:System.Memory和System.Runtime.CompilerServices.Unsafe这两个配置,导致一直无法连接MySQL。但是我在引入sqlsugar相关dll之前,配置文件中已经有了这两个配置了,而线上配置文件是没有的,真是奇怪。

    0 回复
  • xiaodong xiaodong VIP0
    2025/8/23

    @fate sta:辛苦一下把这个问题改为已解决吧,感谢!

    0 回复