用户不会从 Liferay DB 中删除

Posted

技术标签:

【中文标题】用户不会从 Liferay DB 中删除【英文标题】:Users are not getting deleted from Liferay DB 【发布时间】:2013-10-02 02:00:45 【问题描述】:

我已经从 Liferay UI 中删除了用户。有时它要求停用然后删除。有一段时间才停用。并且用户并不总是来自 db。因此,无法重新创建同一用户,因为它会引发诸如“电子邮件地址已存在或用户名已存在”之类的错误。

为什么用户在从 UI 中删除后没有从数据库中删除?

我正在使用 liferay-portal-6.1.1-ce-ga2。

如何解决这个问题?

【问题讨论】:

【参考方案1】:

手动删除:

如果您想直接从数据库中删除,请确保删除下一张表中与用户相关的所有记录:

DELETE FROM Users_UserGroups WHERE userId = 'userid';
DELETE FROM Users_Roles WHERE userId = 'userid';
DELETE FROM Users_Orgs WHERE userId = 'userid';
DELETE FROM Contact_ WHERE userId = 'userid';
DELETE FROM Group_ WHERE classPK = 'userid';
DELETE FROM User_ WHERE userId = 'userid';

【讨论】:

【参考方案2】:

DeactivateDelete 是两个不同的功能。

当您Deactivate 时,用户仍保留在数据库中,只有status 更改为停用。这被称为soft-delete 或逻辑删除,即停用的用户将无法登录,也不会出现在任何搜索等中。但优点是您可以让用户起死回生Activate-ing 用户。因此,这不需要您重新创建用户,还有助于保留用户的历史记录或操作。

如果要从数据库中删除用户,请转到控制面板用户和组织 → 点击搜索所有用户 → 搜索通过高级或基本搜索为用户选择 → 选择用户 → 单击 停用

在此之后,进行高级搜索 → 选择状态为 Inactive → 您将找到所有已停用的用户 → 选择它们并单击 删除

希望这会有所帮助。


编辑

(感谢@hudolejev 在下面的 cmets 中指出这一点)

另外请注意,下面的属性设置为true删除portal-ext.properties中的用户,默认为true

#
# Set this to false if users cannot be deleted.
#
users.delete=true

【讨论】:

是的,不活跃用户的高级搜索允许完全删除用户。 你能告诉我用于在电子邮件通知模板中显示用户名的参数吗? 如果你有liferay源代码,搜索所有*.tmpl文件,那些是电子邮件模板文件。因此,您可以搜索您想要的特定模块的电子邮件模板,例如博客、留言板、维基、会员资格等。您可能希望看到这个 blog post 有点旧,但可以让消息传递。 请问使用jsonws创建用户时发送邮件时使用的邮件模板可以吗? 注意users.deleteportal-ext.properties中要设置为true,否则这个'删除'动作不会出现。【参考方案3】:

当您刚刚停用用户时,它仍然存在于 Liferay DB 中,因此每次停用后,请尝试找到停用的用户,然后将其删除。

如果您在停用后找不到用户,请尝试进入服务器管理并重新索引所有搜索索引。然后再试一次。

问候 马尼什

【讨论】:

以上是关于用户不会从 Liferay DB 中删除的主要内容,如果未能解决你的问题,请参考以下文章

Liferay 6.0 使用 java 控制器从 db 获取 WebForm-portlet 数据

Liferay 用户创建异常 com.liferay.portal.GroupFriendlyURLException

Liferay-删除控制面板菜单

从 URL liferay 中删除 /web/site-name

将用户从 LDAP 导入 Liferay

Liferay 6.1中如何从用户组继承站点角色权限给他们的成员?