阿里云 AnalyticDB MySQL 数据库,批量插入问题 返回

SqlSugar 沟通中
2 334
该叫什么 ~~ 发布于2026/6/16
悬赏:0 飞吻

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data;
using System.Linq;
using System.Reflection;
using SqlSugar;
namespace OrmTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var db = new SqlSugarClient(new SqlSugar.ConnectionConfig()
            {
                ConnectionString = "Server=1111111111111111111111.ads.aliyuncs.com;Port=3306;Database=DB1111111;Uid=aliyun_db_user;Pwd=aliyun_user_pwd",
                DbType = SqlSugar.DbType.MySql,
                IsAutoCloseConnection = true
            });
            //建表 
            db.CodeFirst.InitTables<Test001>();
            //清空表
            db.DbMaintenance.TruncateTable<Test001>();
            List<Test001> list = new List<Test001>();
            list.Add(new Test001 { id=SnowFlakeSingle.instance.NextId(),city="城市1" });
            list.Add(new Test001 { id = SnowFlakeSingle.instance.NextId(), city = "城市2" });
            //插入测试数据
            var result =db.Insertable(list).ExecuteCommand();//用例代码
            Console.WriteLine(result);
            Console.WriteLine("用例跑完");
            Console.ReadKey();
        }
        //建类
        public class Test001
        {            
            [SugarColumn(IsPrimaryKey = true)]
            [Required]
            public long id { get; set; }
            
            public string city { get; set; }
        }
    }
}

执行到这句的时候就报错。

var result =db.Insertable(list).ExecuteCommand();//用例代码

报错如下图所示:

image.png


使用的阿里云 AnalyticDB MySQL 数据库。

热忱回答2

  • fate sta fate sta VIP0
    2026/6/16

    出现原因:一些特殊服务器环境或者魔改的MySql

    原理: 用Ado.net模拟错误

    var conn=new MySqlConnection(字符串);
    conn.Open();
    conn.Close();
    //同一个连接第二次Open就会出来,出现这种情况 Pooling=false 会close后清空这个连接池,
    //所以在次Open就不会有影响了
    conn.Open();

    方案1:字符串上加 Pooling=false (自动释放模式)

    方案2: using(var db=new sqlsugarclient(手动释放模式)){ 。。 } 保证同一个db只会close一次


    0 回复
  • ~~ ~~ VIP0
    2026/6/16
    var result = db.Insertable(list).UseParameter().ExecuteCommand();

    加上UseParameter()方法就解决了

    0 回复