【BOS基础系统_权限】权限常见问题之-脏数据导致的问题原创
金蝶云社区-汪伟康
汪伟康
8人赞赏了该文章 685次浏览 未经作者许可,禁止转载编辑于2024年04月23日 10:14:59

BOS基础系统_权限权限常见问题之-脏数据导致的问题

【问题1】:分配角色报错,分配权限报错等
客户端错误堆栈:

The argument 'id' is invalid. '*******PERMITEM' length:43

解决方法:

1、报错日志中:存在非法id  e98bf***************968bPERMITEM 长度为43,合法长度应该为44,应该是老的版本的遗留数据。

2、select * from T_pm_permitem where fid = 'e98bf***************968bPERMITEM'  查询不到数据

3、根据错误堆栈找到代码中执行的sql,根因在于表T_pm_userorgperm(或者t_pm_roleperm)中存在FpermitemID为上面非法id

(select * from T_pm_userorgperm where fpermitemId = 'e98bf***************968bPERMITEM' ;

select * from t_pm_roleperm where fpermitemId = 'e98bf***************968bPERMITEM')

4、同步权限项,确认一下权限项元数据中是否存在该权限项,同步之后发现该权限项依然查不到。

5、备份T_pm_userorgperm数据: select * into T_pm_userorgperm20200427 from T_pm_userorgperm;同理如果是t_pm_roleperm,就备份t_pm_roleperm的数据

6、删除脏数据:delete from T_pm_userorgperm where fpermitemId =  'e98bf***************968bPERMITEM'或者delete from t_pm_roleperm where fpermitemId =  'e98bf***************968bPERMITEM'

 

【问题2】:分配权限系统树缺失(给用户分配权限时,界面看不到权限项菜单树)

可能存在多根节点,无法加载树。

排查方法:

1、去【子系统树设置】选择权限项,查看客户化树是否正常,如果正常则点保存,如果有大量缺失,就把标准树移过去保存。

2、在客户端同步权限项之后看树是否会丢失,如果丢失,则需排查T_PM_PERMITEM表中是否存在脏数据

3、select * from T_pm_permitem  where fparentId is null  查看根节点的权限项数据是否只有一条,如果有超过1条,则为脏数据,目前权限项树只允许有一个根节点。其脏数据产生原因可能为二开权限项有不规范导致。

4、备份t_pm_permitem:select * into t_pm_permitem2020xxx from t_pm_permitem

5、删除脏数据:delete from T_pm_permitem where fparentId is null

6、客户端同步权限项再观察


赞 8