自定义SQL引用数据权限后报错:表不存在

现象:用户对底表做完数据权限后,自定义SQL里面引用了配置权限的表后查看数据时报错:数据库中的表或视图不存在

场景:用户在自定义SQL里面引用的底表,但是表格的名称写成了大写,底表里面对应的表名却是小写,在对底表做数据权限后查看报告和模型的数据会报错,报错就是:查不到大写的表名,报错截图如下:

自定义SQL引用数据权限后报错:表不存在 - 图1

原因:

  • 用户在数据权限里面配置的底表的表名是小写的,但是自定义表里面引用的表名却是大写的。 导致有数在做数据权限控制的时候是根据自定义表里面的表名写判定的,所以会报错找不到大写的表名

    • 自定义SQL引用数据权限后报错:表不存在 - 图2

    • 自定义SQL引用数据权限后报错:表不存在 - 图3

解决办法:

  1. 先查找有数业务库里面的table_extract表里面的table_name字段看看是否存有对应自定义SQL里面的大写的表名

  2. 在有数Mysql里面的youdata库里面输入: ALTER TABLE table_extract MODIFY COLUMN table_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;使table_name这个字段区分一下大小写(默认是不区分大小写的)

  3. 之后在返回bi前端的数据模型里面找到对应的自定义SQL修改一下里面的表名,将大写的改成小写的,之后在从新校验一下,确保下面显示的表名变成了小写后保存并覆盖即可。

自定义SQL引用数据权限后报错:表不存在 - 图4