WSO2 IS-从IS中删除用户时发生POST_DELETE_USER错误

问题描述 投票:0回答:1

我们已经安装了IS为KM(5.7)的WSO2AM 2.6.0。我们遵循官方文档上写的所有指令,将AM作为一个主动-主动全部部署,将IS作为KM主动-主动部署。根据文档,我们创建了以下数据库及其各自的数据源:regdb(注册表),carbondb,userdb(用户存储),mb-store,apimdb。

我们现在面临的问题是在信息系统方面。我们尝试了几种方法来检查一切是否正常,例如创建用户,检查注册表访问权限等。我们创建了一个名为“ test”的用户,对其属性进行了修改,等等,然后,我们删除该用户。删除用户后,在IS控制台上将显示以下弹出窗口:

POST_DELETE_ERROR

查看日志,我们发现以下内容:

Caused by: org.postgresql.util.PSQLException: ERROR: relation "cm_receipt" does not exist
  Position: 135

TID: [-1234] [] [2020-05-11 09:00:30,062] ERROR {org.wso2.carbon.user.mgt.ui.UserAdminClient} -  Error when handling event : POST_DELETE_USER 
org.wso2.carbon.user.mgt.stub.UserAdminUserAdminException: UserAdminUserAdminException

我们检查了数据库,已正确删除了用户,并且IS Carbon控制台不再显示它,因此已正确删除了用户。再检查一点,“删除”用户进程正在尝试访问carbondb上的表“ cm_receipt”,但是该表存在于apimdb上。

在postgres方面,我们在删除过程中有此日志:

<2020-05-08 11:49:50.452 -03:172.19.35.21(45740):wso2carbon@carbondb:[12476]:>ERROR:  relation "cm_receipt" does not exist at character 135
<2020-05-08 11:49:50.452 -03:172.19.35.21(45740):wso2carbon@carbondb:[12476]:>STATEMENT:  SELECT R.CONSENT_RECEIPT_ID, R.LANGUAGE, R.PII_PRINCIPAL_ID, R.PRINCIPAL_TENANT_ID, R.STATE,RS.SP_DISPLAY_NAME,RS.SP_DESCRIPTION FROM CM_RECEIPT R INNER JOIN CM_RECEIPT_SP_ASSOC RS ON R.CONSENT_RECEIPT_ID=RS.CONSENT_RECEIPT_ID WHERE PII_PRINCIPAL_ID LIKE $1 AND PRINCIPAL_TENANT_ID =$2 AND SP_NAME LIKE $3 AND STATE LIKE $4 ORDER BY ID  ASC LIMIT $5 OFFSET $6

您知道为什么会发生吗?是否存在一些与错误相关的东西?

谢谢!

wso2 wso2-am wso2is
1个回答
3
投票

可能有两个原因。

  1. 您忘了执行包含同意管理表的D脚本。 /wso2is-5.7.0/dbscripts/consent/postgresql.sql
  2. 您的wso2is-5.7.0/repository/conf/consent-mgt-config.xml配置文件引用了错误的数据源。

解决方案>>

检查consent-mgt-config.xml文件所引用的数据源是什么。默认情况下是这样。

<ConsentManager xmlns="http://wso2.org/carbon/consent/management" xmlns:svns="http://org.wso2.securevault/configuration">
    <DataSource>
        <!-- Include a data source name (jndiConfigName) from the set of data sources defined in master-datasources
        .xml -->
        <Name>jdbc/WSO2IdentityDB</Name>
    </DataSource>

这里是jdbc / WSO2IdentityDB

。然后转到wso2is-5.7.0/repository/conf/datasources/master-datasource.xml文件并检查该数据源的数据库。如果未在该数据库中创建上述表,则可以在该数据库中执行上述postgre.sql脚本。 (如果已经在其他数据源中创建了这些表,则可能需要更改consent-mgt-config.xml文件中定义的数据源。)

P.S。请勿在启动时使用-Dsetup参数来自动执行数据库脚本。始终对数据库手动执行数据库脚本。

P.S。用户删除成功的原因是此用户同意删除过程为POST_USER_DELETION

事件。 POST处理程序失败将不会影响操作本身。
© www.soinside.com 2019 - 2024. All rights reserved.