分表后字符集不统一问题 返回

SqlSugar 沟通中
7 768
该叫什么 malong 发布于2025/8/31
悬赏:0 飞吻

分表 后 提示 (0x80004005): Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

分表前

图片.png

分表后




图片.png



版本用的是5.1.4.191

图片.png




热忱回答7

  • malong malong VIP0
    2025/8/31

    前面截图错误: 分表后 字符集变成了  utf8mb4_general_ci

    0 回复
  • malong malong VIP0
    2025/8/31

    图片.png

    这份上分表后的字符集

    0 回复
  • malong malong VIP0
    2025/8/31

    有什么办法可以让分表前后字符集一致?

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

    1、表达式中有没有用ToString() 提取到外面。 

    2、表结构一样


    0 回复
  • malong malong VIP0
    2025/9/2

    表结构一致:


        /// <summary>
        ///  faultinfo
        /// </summary>
        [Serializable]
        // [SugarTable("faultinfo")]
        [SplitTable(SplitType.Day)]//按年分表 (自带分表支持 年、季、月、周、日)
        [SugarTable("faultinfo_{year}{month}{day}")]//3个变量必须要有,这么设计为了兼容开始按年,后面改成按月、按日
        [SugarIndex("index_", "lineNumber", OrderByType.Asc, "train_code", OrderByType.Asc, "coach_no", OrderByType.Asc, "deviceNumber", OrderByType.Asc)]
        [SugarIndex("index_access_time", "access_time", OrderByType.Asc)]
        [SugarIndex("index_train_code", "train_code", OrderByType.Asc)]
        [SugarIndex("index_coach_no", "coach_no", OrderByType.Asc)]
        [SugarIndex("index_deviceNumber", "deviceNumber", OrderByType.Asc)]
        [SugarIndex("index_fault_location", "fault_location", OrderByType.Asc)]
        [SugarIndex("index_fault_code", "fault_code", OrderByType.Asc)]
        [SugarIndex("index_PID", "PID", OrderByType.Asc, true)]
        public partial class Faultinfo : BaseEntity
        {
            /// <summary>
            /// PID
            /// </summary>         
            [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
            [SqlSugar.SugarColumn(IsPrimaryKey = true)]
            public override long PID { get; set; }
            /// <summary>
            /// 故障时间
            /// </summary>
            public DateTime? access_time { get; set; }

            /// <summary>
            /// 车厢号
            /// </summary>
            public string coach_no { get; set; }

            /// <summary>
            /// 报文原数据id
            /// </summary>
            public long? DataId { get; set; }

            /// <summary>
            /// 设备标识
            /// </summary>
            public string? deviceIdentifier { get; set; }

            /// <summary>
            /// 设备号
            /// </summary>
            public string deviceNumber { get; set; }

            /// <summary>
            /// 错误代码
            /// </summary>
            public string? fault_code { get; set; }

            /// <summary>
            /// 故障等级
            /// </summary>
            public int? fault_level { get; set; }

            /// <summary>
            /// 故障点位
            /// </summary>
            public string? fault_location { get; set; }

            /// <summary>
            /// 故障名称
            /// </summary>
            public string? fault_name { get; set; }

            /// <summary>
            /// 故障描述
            /// </summary>
            public string? fault_remarks { get; set; }

            /// <summary>
            /// 故障类型0正常1预警2告警3其他)
            /// </summary>
            public int fault_type { get; set; }

            /// <summary>
            /// 线路号
            /// </summary>
            public int lineNumber { get; set; }

            /// <summary>
            /// 检修建议
            /// </summary>
            public string? proposal { get; set; }

            /// <summary>
            /// 车辆号
            /// </summary>
            public string train_code { get; set; }

            /// <summary>
            /// vehicleInfo表主键id
            /// </summary>
            public long? VehicleId { get; set; }

            /// <summary>
            /// 系统标识
            /// </summary>
            public string? SystemCode { get; set; }

        }

    没有用ToString() 提取到外面
    0 回复
  • 都是代码建出来的表字符集怎么可能有差异,除非你手动改了。或者有老表。



    mysql支持建表配置字符集,需要在 程序启动时加上

    StaticConfig.CodeFirst_MySqlCollate="utf8mb4_0900_ai_ci";
    //较高版本支持 需要字符串上要配置charset=utf8mb4


    0 回复
  • malong malong VIP0
    2025/9/2

    好的 谢谢

    0 回复