fix_collation.sql 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. -- 统一 collation 为 utf8mb4_general_ci,解决 JOIN 时的排序规则冲突
  2. -- 执行前会先检查当前字段定义
  3. USE aidopdev;
  4. -- 检查当前 QualityLineWorkDetail 的 collation
  5. SELECT
  6. TABLE_NAME,
  7. COLUMN_NAME,
  8. COLUMN_TYPE,
  9. COLLATION_NAME
  10. FROM INFORMATION_SCHEMA.COLUMNS
  11. WHERE TABLE_SCHEMA = 'aidopdev'
  12. AND TABLE_NAME = 'QualityLineWorkDetail'
  13. AND COLUMN_NAME IN ('Domain', 'ProdLine', 'Site');
  14. -- 检查当前 LineMaster 的 collation
  15. SELECT
  16. TABLE_NAME,
  17. COLUMN_NAME,
  18. COLUMN_TYPE,
  19. COLLATION_NAME
  20. FROM INFORMATION_SCHEMA.COLUMNS
  21. WHERE TABLE_SCHEMA = 'aidopdev'
  22. AND TABLE_NAME = 'LineMaster'
  23. AND COLUMN_NAME IN ('Domain', 'Line');
  24. -- 修改 QualityLineWorkDetail 表的字段为 utf8mb4_general_ci(保持原长度:ProdLine 12)
  25. ALTER TABLE QualityLineWorkDetail
  26. MODIFY Domain VARCHAR(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  27. MODIFY Site VARCHAR(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  28. MODIFY ProdLine VARCHAR(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  29. -- 修改 LineMaster 表的字段为 utf8mb4_general_ci(保持原长度:Domain 50, Line 100)
  30. ALTER TABLE LineMaster
  31. MODIFY Domain VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  32. MODIFY Line VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  33. -- 验证修改结果
  34. SELECT
  35. TABLE_NAME,
  36. COLUMN_NAME,
  37. COLUMN_TYPE,
  38. COLLATION_NAME
  39. FROM INFORMATION_SCHEMA.COLUMNS
  40. WHERE TABLE_SCHEMA = 'aidopdev'
  41. AND TABLE_NAME IN ('QualityLineWorkDetail', 'LineMaster')
  42. AND COLUMN_NAME IN ('Domain', 'ProdLine', 'Site', 'Line')
  43. ORDER BY TABLE_NAME, COLUMN_NAME;
  44. -- 测试 JOIN 是否还有 collation 冲突
  45. SELECT COUNT(*) AS test_join_count
  46. FROM QualityLineWorkDetail qd
  47. LEFT JOIN LineMaster lm
  48. ON qd.Domain = lm.Domain AND qd.ProdLine = lm.Line
  49. WHERE qd.IsActive = 1
  50. LIMIT 1;
  51. SELECT '修改完成!' AS Status;