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,7 +29,7 @@
29 "AllowedHosts": "*", 29 "AllowedHosts": "*",
30 "ConnectionStrings": { 30 "ConnectionStrings": {
31 "ConfigId": "db", 31 "ConfigId": "db",
32 - "DBName": "lqerp", 32 + "DBName": "lqerp_test",
33 "DBType": "MySql", //MySql;SqlServer;Oracle;PostgreSQL;Dm;Kdbndp; 33 "DBType": "MySql", //MySql;SqlServer;Oracle;PostgreSQL;Dm;Kdbndp;
34 //SqlServer 34 //SqlServer
35 // "DefaultConnection": "Data Source=localhost;Initial Catalog={0};User ID=sqladmin;Password=P@ssw0rd;MultipleActiveResultSets=true" 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,7 +1464,7 @@ namespace NCC.Extend.LqStatistics
1464 SUM(CAST(jksyj.jksyj AS DECIMAL(18,2))) as order_performance 1464 SUM(CAST(jksyj.jksyj AS DECIMAL(18,2))) as order_performance
1465 FROM lq_kd_jksyj jksyj 1465 FROM lq_kd_jksyj jksyj
1466 INNER JOIN lq_kd_pxmx pxmx ON jksyj.F_kdpxid = pxmx.F_Id AND pxmx.F_IsEffective = 1 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 WHERE jksyj.yjsj IS NOT NULL 1468 WHERE jksyj.yjsj IS NOT NULL
1469 AND jksyj.jksyj IS NOT NULL 1469 AND jksyj.jksyj IS NOT NULL
1470 AND jksyj.jksyj != '' 1470 AND jksyj.jksyj != ''
@@ -2529,7 +2529,7 @@ namespace NCC.Extend.LqStatistics @@ -2529,7 +2529,7 @@ namespace NCC.Extend.LqStatistics
2529 SUM(CASE WHEN kd.sfskdd = '是' THEN COALESCE(kd.zdyj, 0) ELSE 0 END) as F_FirstOrderPerformance, 2529 SUM(CASE WHEN kd.sfskdd = '是' THEN COALESCE(kd.zdyj, 0) ELSE 0 END) as F_FirstOrderPerformance,
2530 SUM(CASE WHEN kd.sfskdd = '否' THEN COALESCE(kd.zdyj, 0) ELSE 0 END) as F_UpgradeOrderPerformance 2530 SUM(CASE WHEN kd.sfskdd = '否' THEN COALESCE(kd.zdyj, 0) ELSE 0 END) as F_UpgradeOrderPerformance
2531 FROM lq_kd_kdjlb kd 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 WHERE kd.F_IsEffective = 1 2533 WHERE kd.F_IsEffective = 1
2534 AND DATE_FORMAT(kd.kdrq, '%Y%m') = @statisticsMonth 2534 AND DATE_FORMAT(kd.kdrq, '%Y%m') = @statisticsMonth
2535 GROUP BY kd.djmd, md.dm 2535 GROUP BY kd.djmd, md.dm
@@ -2539,7 +2539,7 @@ namespace NCC.Extend.LqStatistics @@ -2539,7 +2539,7 @@ namespace NCC.Extend.LqStatistics
2539 kd.djmd as F_StoreId, 2539 kd.djmd as F_StoreId,
2540 COUNT(pxmx.F_ProjectNumber) as F_ItemQuantity 2540 COUNT(pxmx.F_ProjectNumber) as F_ItemQuantity
2541 FROM lq_kd_kdjlb kd 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 WHERE kd.F_IsEffective = 1 2543 WHERE kd.F_IsEffective = 1
2544 AND DATE_FORMAT(kd.kdrq, '%Y%m') = @statisticsMonth 2544 AND DATE_FORMAT(kd.kdrq, '%Y%m') = @statisticsMonth
2545 GROUP BY kd.djmd 2545 GROUP BY kd.djmd
@@ -2924,7 +2924,7 @@ namespace NCC.Extend.LqStatistics @@ -2924,7 +2924,7 @@ namespace NCC.Extend.LqStatistics
2924 var personalPerformanceSql = @" 2924 var personalPerformanceSql = @"
2925 UPDATE lq_salary_statistics s 2925 UPDATE lq_salary_statistics s
2926 INNER JOIN lq_statistics_personal_performance p 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 AND s.F_StatisticsMonth = p.F_StatisticsMonth 2928 AND s.F_StatisticsMonth = p.F_StatisticsMonth
2929 SET 2929 SET
2930 s.F_TotalPerformance = p.F_TotalPerformance, 2930 s.F_TotalPerformance = p.F_TotalPerformance,
@@ -2944,7 +2944,7 @@ namespace NCC.Extend.LqStatistics @@ -2944,7 +2944,7 @@ namespace NCC.Extend.LqStatistics
2944 var storePerformanceSql = @" 2944 var storePerformanceSql = @"
2945 UPDATE lq_salary_statistics s 2945 UPDATE lq_salary_statistics s
2946 INNER JOIN lq_statistics_store_total_performance st 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 AND s.F_StatisticsMonth = st.F_StatisticsMonth 2948 AND s.F_StatisticsMonth = st.F_StatisticsMonth
2949 SET 2949 SET
2950 s.F_StoreTotalPerformance = st.F_TotalOrderPerformance 2950 s.F_StoreTotalPerformance = st.F_TotalOrderPerformance
@@ -2960,7 +2960,7 @@ namespace NCC.Extend.LqStatistics @@ -2960,7 +2960,7 @@ namespace NCC.Extend.LqStatistics
2960 var teamPerformanceSql = @" 2960 var teamPerformanceSql = @"
2961 UPDATE lq_salary_statistics s 2961 UPDATE lq_salary_statistics s
2962 INNER JOIN lq_statistics_gold_triangle gt 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 AND s.F_StatisticsMonth = gt.F_StatisticsMonth 2964 AND s.F_StatisticsMonth = gt.F_StatisticsMonth
2965 SET 2965 SET
2966 s.F_TeamPerformance = gt.F_TotalPerformance 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;