fix_remaining_collations.sql 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. -- 【方案总结】统一 aidopdev 数据库中所有表的 collation
  2. -- 目标:将所有 utf8mb4_0900_ai_ci 和 utf8mb4_unicode_ci 统一改为 utf8mb4_general_ci
  3. -- 避免 JOIN 时的 collation 冲突错误
  4. USE aidopdev;
  5. -- ═══════════════════════════════════════════════════════════
  6. -- 已完成的修复(前面步骤)
  7. -- ═══════════════════════════════════════════════════════════
  8. -- ✓ QualityLineWorkDetail (Domain, Site, ProdLine)
  9. -- ✓ LineMaster (Domain, Line)
  10. -- ✓ ResourceOccupancyTime (Domain, Site, Resource, ResourceType, Descr, Ufld1, Ufld2, CreateUser, UpdateUser)
  11. -- ═══════════════════════════════════════════════════════════
  12. -- 还需修复的核心业务表
  13. -- ═══════════════════════════════════════════════════════════
  14. SELECT '开始修复 NbrMaster 和 NbrDetail 表' AS 步骤;
  15. -- NbrMaster 表
  16. ALTER TABLE NbrMaster
  17. MODIFY Domain VARCHAR(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  18. MODIFY Cust VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  19. MODIFY Department VARCHAR(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  20. -- NbrDetail 表
  21. ALTER TABLE NbrDetail
  22. MODIFY Domain VARCHAR(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  23. MODIFY Department VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  24. SELECT '开始修复 PurOrdMaster 和 PurOrdRctMaster 表' AS 步骤;
  25. -- PurOrdMaster 表
  26. ALTER TABLE PurOrdMaster
  27. MODIFY Domain VARCHAR(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  28. MODIFY Site VARCHAR(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  29. MODIFY Department VARCHAR(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  30. -- PurOrdRctMaster 表
  31. ALTER TABLE PurOrdRctMaster
  32. MODIFY Domain VARCHAR(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  33. SELECT '开始修复 ScheduleResultOpMaster 表' AS 步骤;
  34. -- ScheduleResultOpMaster 表
  35. ALTER TABLE ScheduleResultOpMaster
  36. MODIFY Domain VARCHAR(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  37. MODIFY Line VARCHAR(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  38. SELECT '开始修复 LinkagePlan 表' AS 步骤;
  39. -- LinkagePlan 表(只修改可能用于 JOIN 的字段)
  40. ALTER TABLE LinkagePlan
  41. MODIFY bill_no VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  42. MODIFY custom_no VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  43. MODIFY item_number VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  44. SELECT '开始修复 OpTransEmployee 表' AS 步骤;
  45. -- OpTransEmployee 表
  46. ALTER TABLE OpTransEmployee
  47. MODIFY Domain VARCHAR(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  48. -- ═══════════════════════════════════════════════════════════
  49. -- 验证修复结果
  50. -- ═══════════════════════════════════════════════════════════
  51. SELECT '验证修复结果:检查核心业务表' AS 步骤;
  52. SELECT TABLE_NAME, COLUMN_NAME, COLLATION_NAME
  53. FROM INFORMATION_SCHEMA.COLUMNS
  54. WHERE TABLE_SCHEMA = 'aidopdev'
  55. AND TABLE_NAME IN (
  56. 'NbrMaster', 'NbrDetail', 'PurOrdMaster', 'PurOrdRctMaster',
  57. 'ScheduleResultOpMaster', 'LinkagePlan', 'OpTransEmployee'
  58. )
  59. AND COLUMN_NAME IN ('Domain', 'Site', 'Department', 'Cust', 'Line', 'bill_no', 'custom_no', 'item_number')
  60. AND COLLATION_NAME IS NOT NULL
  61. ORDER BY TABLE_NAME, COLUMN_NAME;
  62. SELECT '核心业务表修复完成!' AS 状态;