分表后字符集不统一问题 返回
malong 发布于2025/8/31
分表 后 提示 (0x80004005): Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='
分表前

分表后

版本用的是5.1.4.191

热忱回答(7)
-
malong VIP0
2025/8/31前面截图错误: 分表后 字符集变成了 utf8mb4_general_ci
0 回复 -
malong VIP0
2025/8/31
这份上分表后的字符集
0 回复 -
malong VIP0
2025/8/31有什么办法可以让分表前后字符集一致?
0 回复 -
fate sta VIP0
2025/8/311、表达式中有没有用ToString() 提取到外面。
2、表结构一样
0 回复 -
malong VIP0
2025/9/2表结构一致:
没有用ToString() 提取到外面
/// <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; }
}0 回复 -
fate sta VIP0
2025/9/2都是代码建出来的表字符集怎么可能有差异,除非你手动改了。或者有老表。
mysql支持建表配置字符集,需要在 程序启动时加上
StaticConfig.CodeFirst_MySqlCollate="utf8mb4_0900_ai_ci"; //较高版本支持 需要字符串上要配置charset=utf8mb4
0 回复 -
malong VIP0
2025/9/2好的 谢谢
0 回复