Acumatica刷新页面时出现An error has occurred报错的技术咨询
问题根因
- 数据库表异常:
MUIUserScreenRelevance是Acumatica存储用户常用菜单关联关系的系统表,首先确认该表在CompanyID=2的租户下是否存在、结构是否完整(包含UserID、CompanyID、NodeID、Relevance字段),版本升级、二次开发部署时遗漏表同步或者权限配置都会导致查询报错。 - 参数异常:SQL中转换为UNIQUEIDENTIFIER的用户ID
b5344897-037e-4d58-b5c3-1bdfd0f47bf9如果不存在于系统用户表,或者格式异常,会触发数据类型转换错误。 - 数据损坏:对应用户的常用菜单关联记录存在无效的NodeID值,无法关联到系统有效菜单节点,触发上层业务逻辑报错。
- 日志组件异常:从报错堆栈看错误触发在Serilog日志写入阶段,若Serilog配置的日志存储路径无写入权限、磁盘空间不足、数据库日志Sink对应的表结构损坏,都会导致日志写入失败直接抛出异常。
- 查询编译异常:SQL末尾的
OPTION(OPTIMIZE FOR UNKNOWN)查询提示,在开启特定参数嗅探配置的低版本SQL Server实例中,可能触发查询编译失败。
解决方案
- 先在对应SQL Server实例中选择CompanyID=2的租户库,直接执行报错关联的SQL语句:
- 若SQL执行报错,根据数据库返回的具体错误信息修复表结构、权限或者参数问题即可。
- 若SQL执行正常,继续执行后续排查步骤。
- 清除Acumatica系统服务器缓存,重启应用站点后重试,排除缓存的无效查询模板导致的异常。
- 检查Serilog配置:
- 若为文件日志,确认日志存储目录读写权限正常、磁盘剩余空间充足。
- 若配置了数据库日志Sink,确认日志表结构正常、数据库连接账号有写入权限。
- 若以上步骤均无效,可直接删除
MUIUserScreenRelevance表中UserID='b5344897-037e-4d58-b5c3-1bdfd0f47bf9' AND CompanyID=2的所有记录,系统会自动重新生成该用户的常用菜单关联数据,无需额外配置。
内容的提问来源于stack exchange,提问作者Bajrang Patidar
相关产品推荐
相关产品推荐

