Mysql 表 列的类型为bit(1) 采用Fastest<System.Data.DataTable> 批量插入失败 返回

SqlSugar 沟通中
2 294

测试表mysql 如下

CREATE TABLE `wuzp` (

`id` INT(11) NULL DEFAULT NULL,

`flag` BIT(1) NULL DEFAULT NULL

)

    // 创建与表结构匹配的DataTable

 DataTable dt = new DataTable();

 dt.Columns.Add("id", typeof(int));

 dt.Columns.Add("flag", typeof(bool)); // BIT(1)映射为bool 或者ulong  都失败


 DataRow dr = dt.NewRow();

  dr["id"] = 1111;

   dr["flag"] = true;

  dt.Rows.Add(dr);

   DataRow dr1 = dt.NewRow();

  dr1["id"] = 1112;

    dr1["flag"] = false;

   dt.Rows.Add(dr1);


db.Fastest<System.Data.DataTable>().AS("wuzp").BulkCopy(dt);


image.png


结果false 的列位null



如果

dt.Columns.Add("flag", typeof(ulong));



flag 插入后列都为1 





热忱回答2

  • fate sta fate sta VIP0
    2025/7/24

    mysql  bulkcopy需要用这个类型  tinyint(1) 



    bit是sqlserver中用的。

    0 回复
  • @fate sta

     没办法 是迁移数据  带bit 类型的 做了转换

      List<Dictionary<string, object>> dc = db.Utilities.DataTableToDictionaryList(destDataTable);

      db.Insertable(dc).AS("wzp").ExecuteCommand();


    不带 bit 的表 用 bulkcopy  


    0 回复