Commit dfe6188bb685b91ac1162be135fd3c848b3db02a

Authored by “wangming”
1 parent 278810cb

修复数据库排序规则冲突问题

- 修复LqZjlMdsmxszService.GetPageList接口的排序规则冲突
- 修复LqStatisticsService中工资统计相关的排序规则冲突
- 在涉及lq_kd_kdjlb表的JOIN操作中添加COLLATE子句
- 更新UpdateSalaryStatisticsFromOtherTables方法中的COLLATE子句
- 创建修复排序规则冲突的精简版SQL脚本
netcore/src/Application/NCC.API/appsettings.json
... ... @@ -29,7 +29,7 @@
29 29 "AllowedHosts": "*",
30 30 "ConnectionStrings": {
31 31 "ConfigId": "db",
32   - "DBName": "lqerp",
  32 + "DBName": "lqerp_test",
33 33 "DBType": "MySql", //MySql;SqlServer;Oracle;PostgreSQL;Dm;Kdbndp;
34 34 //SqlServer
35 35 // "DefaultConnection": "Data Source=localhost;Initial Catalog={0};User ID=sqladmin;Password=P@ssw0rd;MultipleActiveResultSets=true"
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs
... ... @@ -1464,7 +1464,7 @@ namespace NCC.Extend.LqStatistics
1464 1464 SUM(CAST(jksyj.jksyj AS DECIMAL(18,2))) as order_performance
1465 1465 FROM lq_kd_jksyj jksyj
1466 1466 INNER JOIN lq_kd_pxmx pxmx ON jksyj.F_kdpxid = pxmx.F_Id AND pxmx.F_IsEffective = 1
1467   - INNER JOIN lq_kd_kdjlb kd ON jksyj.glkdbh = kd.F_Id
  1467 + INNER JOIN lq_kd_kdjlb kd ON jksyj.glkdbh COLLATE utf8mb4_general_ci = kd.F_Id COLLATE utf8mb4_general_ci
1468 1468 WHERE jksyj.yjsj IS NOT NULL
1469 1469 AND jksyj.jksyj IS NOT NULL
1470 1470 AND jksyj.jksyj != ''
... ... @@ -2529,7 +2529,7 @@ namespace NCC.Extend.LqStatistics
2529 2529 SUM(CASE WHEN kd.sfskdd = '是' THEN COALESCE(kd.zdyj, 0) ELSE 0 END) as F_FirstOrderPerformance,
2530 2530 SUM(CASE WHEN kd.sfskdd = '否' THEN COALESCE(kd.zdyj, 0) ELSE 0 END) as F_UpgradeOrderPerformance
2531 2531 FROM lq_kd_kdjlb kd
2532   - LEFT JOIN lq_mdxx md ON kd.djmd = md.F_Id
  2532 + LEFT JOIN lq_mdxx md ON kd.djmd COLLATE utf8mb4_general_ci = md.F_Id COLLATE utf8mb4_general_ci
2533 2533 WHERE kd.F_IsEffective = 1
2534 2534 AND DATE_FORMAT(kd.kdrq, '%Y%m') = @statisticsMonth
2535 2535 GROUP BY kd.djmd, md.dm
... ... @@ -2539,7 +2539,7 @@ namespace NCC.Extend.LqStatistics
2539 2539 kd.djmd as F_StoreId,
2540 2540 COUNT(pxmx.F_ProjectNumber) as F_ItemQuantity
2541 2541 FROM lq_kd_kdjlb kd
2542   - LEFT JOIN lq_kd_pxmx pxmx ON kd.F_Id = pxmx.glkdbh AND pxmx.F_IsEffective = 1
  2542 + LEFT JOIN lq_kd_pxmx pxmx ON kd.F_Id COLLATE utf8mb4_general_ci = pxmx.glkdbh COLLATE utf8mb4_general_ci AND pxmx.F_IsEffective = 1
2543 2543 WHERE kd.F_IsEffective = 1
2544 2544 AND DATE_FORMAT(kd.kdrq, '%Y%m') = @statisticsMonth
2545 2545 GROUP BY kd.djmd
... ... @@ -2924,7 +2924,7 @@ namespace NCC.Extend.LqStatistics
2924 2924 var personalPerformanceSql = @"
2925 2925 UPDATE lq_salary_statistics s
2926 2926 INNER JOIN lq_statistics_personal_performance p
2927   - ON s.F_EmployeeId COLLATE utf8mb4_unicode_ci = p.F_EmployeeId COLLATE utf8mb4_unicode_ci
  2927 + ON s.F_EmployeeId COLLATE utf8mb4_general_ci = p.F_EmployeeId COLLATE utf8mb4_general_ci
2928 2928 AND s.F_StatisticsMonth = p.F_StatisticsMonth
2929 2929 SET
2930 2930 s.F_TotalPerformance = p.F_TotalPerformance,
... ... @@ -2944,7 +2944,7 @@ namespace NCC.Extend.LqStatistics
2944 2944 var storePerformanceSql = @"
2945 2945 UPDATE lq_salary_statistics s
2946 2946 INNER JOIN lq_statistics_store_total_performance st
2947   - ON s.F_StoreId COLLATE utf8mb4_unicode_ci = st.F_StoreId COLLATE utf8mb4_unicode_ci
  2947 + ON s.F_StoreId COLLATE utf8mb4_general_ci = st.F_StoreId COLLATE utf8mb4_general_ci
2948 2948 AND s.F_StatisticsMonth = st.F_StatisticsMonth
2949 2949 SET
2950 2950 s.F_StoreTotalPerformance = st.F_TotalOrderPerformance
... ... @@ -2960,7 +2960,7 @@ namespace NCC.Extend.LqStatistics
2960 2960 var teamPerformanceSql = @"
2961 2961 UPDATE lq_salary_statistics s
2962 2962 INNER JOIN lq_statistics_gold_triangle gt
2963   - ON s.F_GoldTriangleId COLLATE utf8mb4_unicode_ci = gt.F_GoldTriangleId COLLATE utf8mb4_unicode_ci
  2963 + ON s.F_GoldTriangleId COLLATE utf8mb4_general_ci = gt.F_GoldTriangleId COLLATE utf8mb4_general_ci
2964 2964 AND s.F_StatisticsMonth = gt.F_StatisticsMonth
2965 2965 SET
2966 2966 s.F_TeamPerformance = gt.F_TotalPerformance
... ...
修复排序规则冲突_精简版.sql 0 → 100644
  1 +-- 修复排序规则冲突 - 精简版
  2 +-- 只更新报错的相关表
  3 +
  4 +-- 1. 统一 BASE_USER 表的所有字段排序规则
  5 +ALTER TABLE BASE_USER CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  6 +
  7 +-- 2. 统一 lq_mdxx 表的所有字段排序规则
  8 +ALTER TABLE lq_mdxx CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  9 +
  10 +-- 3. 统一 lq_zjl_mdsmxsz 表的所有字段排序规则
  11 +ALTER TABLE lq_zjl_mdsmxsz CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  12 +
  13 +-- 4. 统一 lq_ycsd_jsj 表的所有字段排序规则
  14 +ALTER TABLE lq_ycsd_jsj CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  15 +
  16 +-- 5. 统一 lq_kd_jksyj 表的所有字段排序规则
  17 +ALTER TABLE lq_kd_jksyj CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  18 +
  19 +-- 6. 统一 lq_statistics_gold_triangle 表的所有字段排序规则
  20 +ALTER TABLE lq_statistics_gold_triangle CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  21 +
  22 +-- 7. 统一 lq_jinsanjiao_user 表的所有字段排序规则
  23 +ALTER TABLE lq_jinsanjiao_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  24 +
  25 +-- 8. 统一 lq_salary_statistics 表的所有字段排序规则
  26 +ALTER TABLE lq_salary_statistics CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  27 +
  28 +-- 9. 统一 lq_kd_pxmx 表的所有字段排序规则
  29 +ALTER TABLE lq_kd_pxmx CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  30 +
  31 +-- 10. 跳过 lq_kd_kdjlb 表(表太大,无法转换)
  32 +-- ALTER TABLE lq_kd_kdjlb CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  33 +
  34 +-- 11. 统一 lq_xmzl 表的所有字段排序规则
  35 +ALTER TABLE lq_xmzl CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  36 +
  37 +-- 12. 统一 lq_statistics_personal_performance 表的所有字段排序规则
  38 +ALTER TABLE lq_statistics_personal_performance CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  39 +
  40 +-- 13. 统一 lq_statistics_store_total_performance 表的所有字段排序规则
  41 +ALTER TABLE lq_statistics_store_total_performance CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  42 +
  43 +-- 验证排序规则是否统一
  44 +SELECT
  45 + TABLE_NAME,
  46 + TABLE_COLLATION
  47 +FROM INFORMATION_SCHEMA.TABLES
  48 +WHERE TABLE_SCHEMA = DATABASE()
  49 + AND TABLE_NAME IN ('BASE_USER', 'lq_mdxx', 'lq_zjl_mdsmxsz', 'lq_ycsd_jsj', 'lq_kd_jksyj', 'lq_statistics_gold_triangle', 'lq_jinsanjiao_user', 'lq_salary_statistics', 'lq_kd_pxmx', 'lq_xmzl', 'lq_statistics_personal_performance', 'lq_statistics_store_total_performance')
  50 +ORDER BY TABLE_NAME;
... ...