Magento 2.2.2后台及setup:upgrade报错:无法创建ACL对象,角色‘5’未找到
解决Magento 2.2.2 ACL角色找不到的问题
我之前也碰到过一模一样的情况——明明数据库authorization_role表里有role_id=5的记录,但登录后台和执行setup:upgrade时还是抛出Could not create an acl object: Role '5' not found的错误。给你几个亲测有效的排查和解决步骤:
检查关联权限规则表数据
Magento的ACL系统不仅依赖角色表,还需要authorization_rule表里的对应权限规则支撑。用以下SQL查询是否存在role_id=5的规则记录:SELECT * FROM authorization_rule WHERE role_id = 5;如果没有任何结果,要么是这条角色的权限规则丢失了,要么它是个废弃的空角色。如果是废弃角色,直接删除即可;如果是有用的角色,你可以尝试重新给它分配权限,或者从备份中恢复对应的规则数据。
彻底清理缓存与生成文件
有时候系统缓存的旧数据会“屏蔽”数据库的新记录,执行以下命令彻底清理:bin/magento cache:flush bin/magento cache:clean rm -rf generated/code generated/metadata清理完成后再重新执行
bin/magento setup:upgrade试试。验证角色的父角色有效性
检查这条角色的父角色是否存在:SELECT parent_id FROM authorization_role WHERE role_id = 5; SELECT * FROM authorization_role WHERE role_id = [上面查到的parent_id];如果父角色不存在,把这条角色的
parent_id改成0(设置为顶级角色),或者替换成一个存在的角色ID,然后刷新缓存再执行升级命令。直接删除废弃角色(谨慎操作)
如果确认role_id=5的角色是无用的(比如测试账号遗留、已删除用户的角色),可以直接删除这条记录:DELETE FROM authorization_role WHERE role_id = 5;⚠️ 操作前一定要备份数据库,避免误删重要数据!删除后再执行
bin/magento setup:upgrade应该就能解决问题了。
内容的提问来源于stack exchange,提问作者phpdevmike
相关产品推荐
相关产品推荐

