问题诊断:
PeriodSequenceDet 表的 Domain、ItemNum、Line 字段使用 utf8mb4_0900_ai_ciWorkOrdMaster、ItemMaster、LineMaster)JOIN 时报错修复操作:
ALTER TABLE PeriodSequenceDet
MODIFY COLUMN Domain VARCHAR(8) COLLATE utf8mb4_general_ci,
MODIFY COLUMN ItemNum VARCHAR(24) COLLATE utf8mb4_general_ci,
MODIFY COLUMN Line VARCHAR(8) COLLATE utf8mb4_general_ci;
修复后验证:
表名 字段名 排序规则
ItemMaster Domain utf8mb4_general_ci ✅
ItemMaster ItemNum utf8mb4_general_ci ✅
LineMaster Domain utf8mb4_general_ci ✅
LineMaster Line utf8mb4_general_ci ✅
PeriodSequenceDet Domain utf8mb4_general_ci ✅
PeriodSequenceDet ItemNum utf8mb4_general_ci ✅
PeriodSequenceDet Line utf8mb4_general_ci ✅
WorkOrdMaster Domain utf8mb4_general_ci ✅
WorkOrdMaster ItemNum utf8mb4_general_ci ✅
WorkOrdMaster WorkOrd utf8mb4_general_ci ✅
mes_morder morder_no utf8mb4_general_ci ✅
解决的错误:
Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='
✅ QualityLineWorkDetail(产线休息时间)
✅ LineMaster(产线主数据)
✅ HolidayMaster(产线节假日)
✅ ResourceOccupancyTime(产线加班)
✅ ASNBOLShipperMaster(订单发货主表)
✅ DepartmentMaster(部门主数据)
✅ ShippingPlanDetail(发货计划明细)
✅ ASNBOLShipperDetail(发货明细)
✅ NbrMaster / NbrDetail(单据主数据)
✅ PurOrdMaster / PurOrdRctMaster(采购订单)
✅ ScheduleResultOpMaster(排产结果)
✅ LinkagePlan(联动计划)
✅ OpTransEmployee(操作员工)
✅ PeriodSequenceDet(工艺顺序明细)
将所有可能用于 JOIN 的字符串字段统一为 utf8mb4_general_ci,解决不同表之间字段排序规则不一致导致的错误。
所有修复脚本已保存在:
d:\DEMONET\tools\sql\fix_collation.sql(第一批)d:\DEMONET\tools\sql\fix_all_collations.sql(ResourceOccupancyTime)d:\DEMONET\tools\sql\fix_remaining_collations.sql(其他核心表)d:\DEMONET\tools\sql\fix_workorder_collations.sql(PeriodSequenceDet)✨ 新增d:\DEMONET\tools\sql\check_workorder_collations.sql(检查脚本)✨ 新增d:\DEMONET\tools\sql\test_workorder_query.sql(测试查询)✨ 新增