63 lines
2.9 KiB
SQL
63 lines
2.9 KiB
SQL
-- 数据权限表:诊断 CHAR(36) 非法 GUID
|
||
-- 症状:GET /rbac/data-perm/template/list → Could not parse CHAR(36) value as Guid: 1
|
||
-- 或其它 data-perm 接口同类报错
|
||
--
|
||
-- ⚠️ 在 API 实际连接的 RBAC 库执行(与 user/role/menu 同库)
|
||
|
||
SET @GUID_RE = '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$';
|
||
|
||
SELECT 'data_perm_template bad Id' AS section, t.`Id`, t.`Name`, t.`Code`, t.`CreateUserId`
|
||
FROM `data_perm_template` t
|
||
WHERE t.`Id` NOT REGEXP @GUID_RE;
|
||
|
||
SELECT 'data_perm_template_item bad Id/TemplateId' AS section, i.`Id`, i.`TemplateId`, i.`DimensionType`
|
||
FROM `data_perm_template_item` i
|
||
WHERE i.`Id` NOT REGEXP @GUID_RE
|
||
OR i.`TemplateId` NOT REGEXP @GUID_RE;
|
||
|
||
SELECT 'data_resource bad Id' AS section, r.`Id`, r.`Code`, r.`Name`
|
||
FROM `data_resource` r
|
||
WHERE r.`Id` NOT REGEXP @GUID_RE;
|
||
|
||
SELECT 'data_perm_field_mask bad Id' AS section, f.`Id`, f.`DataResourceCode`, f.`FieldName`
|
||
FROM `data_perm_field_mask` f
|
||
WHERE f.`Id` NOT REGEXP @GUID_RE;
|
||
|
||
SELECT 'user_org_perm bad Id/UserId/OrganizationId' AS section, p.`Id`, p.`UserId`, p.`OrganizationId`
|
||
FROM `user_org_perm` p
|
||
WHERE p.`Id` NOT REGEXP @GUID_RE
|
||
OR p.`UserId` NOT REGEXP @GUID_RE
|
||
OR p.`OrganizationId` NOT REGEXP @GUID_RE;
|
||
|
||
SELECT 'role_org_perm bad Id/RoleId/OrganizationId' AS section, p.`Id`, p.`RoleId`, p.`OrganizationId`
|
||
FROM `role_org_perm` p
|
||
WHERE p.`Id` NOT REGEXP @GUID_RE
|
||
OR p.`RoleId` NOT REGEXP @GUID_RE
|
||
OR p.`OrganizationId` NOT REGEXP @GUID_RE;
|
||
|
||
SELECT 'user_data_scope bad Id/UserId' AS section, p.`Id`, p.`UserId`, p.`DataResourceCode`
|
||
FROM `user_data_scope` p
|
||
WHERE p.`Id` NOT REGEXP @GUID_RE
|
||
OR p.`UserId` NOT REGEXP @GUID_RE;
|
||
|
||
SELECT 'role_data_scope bad Id/RoleId' AS section, p.`Id`, p.`RoleId`, p.`DataResourceCode`
|
||
FROM `role_data_scope` p
|
||
WHERE p.`Id` NOT REGEXP @GUID_RE
|
||
OR p.`RoleId` NOT REGEXP @GUID_RE;
|
||
|
||
SELECT 'data_perm_change_log bad TargetId' AS section, l.`Id`, l.`TargetType`, l.`TargetId`, l.`Action`
|
||
FROM `data_perm_change_log` l
|
||
WHERE l.`TargetId` NOT REGEXP @GUID_RE;
|
||
|
||
SELECT 'data_perm_access_log bad UserId' AS section, l.`Id`, l.`UserId`, l.`DataResourceCode`, l.`ApiPath`
|
||
FROM `data_perm_access_log` l
|
||
WHERE l.`UserId` NOT REGEXP @GUID_RE;
|
||
|
||
-- 常见脏值快捷统计
|
||
SELECT 'template Id=1' AS hint, COUNT(*) AS cnt FROM `data_perm_template` WHERE TRIM(`Id`) IN ('0', '1', '2');
|
||
SELECT 'template_item Id=1' AS hint, COUNT(*) AS cnt FROM `data_perm_template_item` WHERE TRIM(`Id`) IN ('0', '1', '2');
|
||
SELECT 'template dp prefix' AS hint, COUNT(*) AS cnt FROM `data_perm_template` WHERE `Id` LIKE 'dp%';
|
||
SELECT 'template dr prefix' AS hint, COUNT(*) AS cnt FROM `data_perm_template` WHERE `Id` LIKE 'dr%';
|
||
SELECT 'data_resource dr000001 prefix' AS hint, COUNT(*) AS cnt FROM `data_resource` WHERE `Id` LIKE 'dr000001-%';
|
||
SELECT 'field_mask fm000001 prefix' AS hint, COUNT(*) AS cnt FROM `data_perm_field_mask` WHERE `Id` LIKE 'fm000001-%';
|