设置完权限不管用,自己手写sql,本地不报错,部署完了服务器报错

Blade 未结 1 467
3269159910
3269159910 2022-09-06 16:23

一、该问题的重现步骤是什么?

1. 配置了接口权限,不管用,然后自己手写了sql,正常使用了

2. 本地可以正常使用,部署到服务器上,就会自己在sql语句上,补全一段权限的sql语句

3.查询出来的数据也是错误的数据


二、你期待的结果是什么?实际看到的又是什么?

期待部署完了,和本地在控制台上打印一样的内容,实际部署完了和本地控制台不一样

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

boot版本的2.8.1         linux

四、请提供详细的错误堆栈信息,这很重要。

1662426912687936.png


Execute SQL : select * from (SELECT * FROM (SELECT cc.*, c.customer_name AS customerName, d1.dict_value AS importanceHY, cu.principal_id AS principal_id, CASE WHEN cc.sex = 1 THEN '女' WHEN cc.sex = 0 THEN '男' ELSE '' END AS sexHY FROM blade_customer_contact AS cc LEFT JOIN blade_customer AS c ON cc.customer_id = c.id LEFT JOIN blade_dict_biz AS d1 ON cc.importance = d1.dict_key AND d1.tenant_id = '000000' LEFT JOIN blade_concent_user AS cu ON cu.contacts_id = cc.id LEFT JOIN blade_user AS u ON u.id = cc.principal WHERE cc.is_deleted = 0) socpe WHERE principal_id IN (WITH RECURSIVE temp AS (SELECT t.* FROM blade_user t WHERE id = ? UNION ALL SELECT t.* FROM blade_user t INNER JOIN temp ON t.parent_id = temp.id) SELECT id FROM temp) LIMIT ?, ?) scope where  FIND_IN_SET (principal_id,(


WITH RECURSIVE temp as (


    SELECT t.* FROM blade_user t WHERE id = 1234


    UNION ALL


    SELECT t.* FROM blade_user t INNER JOIN temp ON t.parent_id = temp.id


)


SELECT  GROUP_CONCAT(id) FROM temp  )


)


Execute Time: 7.204ms

五、若有更多详细信息,请在下面提供。

1条回答
  •  admin
    admin (楼主)
    2022-09-07 10:36

    本地可以正常运行,服务器不正常,这类问题太多了。代码本身不会有多重结果产生,所以大多都是配置、数据库设置导致的。

    你服务器和本地的数据库数据是一模一样的么?本地测试的用户和服务器的用户也是一模一样的么?如果能保证代码、数据库数据、操作用户、操作步骤都一样,还会导致两边结果不一样的话。麻烦测试一下其他的数据权限,或者把你这个出问题的数据权限的sql改简单一些,看看会不会有同样的问题(自动加一段权限sql)出现。

    如果出现了,请写一个最精简的demo给我们,附上操作步骤,我们来调试一下,邮件请发: bladejava@qq.com

    0 讨论(0)
提交回复