(本文档仅供参考)
问题描述
交互式仪表盘,一旦查询无数据,会报错Populating member cache with members for
errorMessageMondrian Error:Internal error: Populating member cache with members for []; sql=[] errorStackTrace=mondrian.olap.MondrianException: Mondrian Error:Internal error: Populating member cache with members for []; sql=[] at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:1002) at mondrian.olap.Util.newInternal(Util.java:2566) at mondrian.olap.Util.newError(Util.java:2582) at mondrian.rolap.SqlStatement.handle(SqlStatement.java:386) at mondrian.rolap.SqlTupleReader.prepareTuples(SqlTupleReader.java:607) at mondrian.rolap.SqlTupleReader.readTuples(SqlTupleReader.java:732) at mondrian.rolap.RolapNativeSet$SetEvaluator.executeList(RolapNativeSet.java:310) at mondrian.rolap.RolapNativeSet$SetEvaluator.execute(RolapNativeSet.java:226) at mondrian.olap.fun.NonEmptyCrossJoinFunDef$1.evaluateList(NonEmptyCrossJoinFunDef.java:252) at mondrian.olap.fun.DistinctFunDef$CalcImpl.evaluateList(DistinctFunDef.java:54) at mondrian.olap.fun.NonEmptySubSetFunDef$1.evaluateList(NonEmptySubSetFunDef.java:114) at mondrian.calc.impl.AbstractListCalc.evaluateIterable(AbstractListCalc.java:70) at mondrian.rolap.RolapResult.executeAxis(RolapResult.java:1317) at mondrian.rolap.RolapResult.evalLoad(RolapResult.java:830) at mondrian.rolap.RolapResult.loadMembers(RolapResult.java:800) at mondrian.rolap.RolapResult.<init>(RolapResult.java:437) at mondrian.rolap.RolapConnection.executeInternal(RolapConnection.java:777) at mondrian.rolap.RolapConnection.access$000(RolapConnection.java:102) at mondrian.rolap.RolapConnection$1.call(RolapConnection.java:709) at mondrian.rolap.RolapConnection$1.call(RolapConnection.java:707) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: com.ibm.db2.jcc.am.SqlException: [jcc][t4][10120][10898][4.21.29] 操作无效:已关闭 result set。 ERRORCODE=-4470, SQLSTATE=null at com.ibm.db2.jcc.am.kd.a(kd.java:794) at com.ibm.db2.jcc.am.kd.a(kd.java:66) at com.ibm.db2.jcc.am.kd.a(kd.java:116) at com.ibm.db2.jcc.am.ResultSet.checkForClosedResultSet(ResultSet.java:4699) at com.ibm.db2.jcc.am.ResultSet.getMetaDataX(ResultSet.java:1970) at com.ibm.db2.jcc.am.ResultSet.getMetaData(ResultSet.java:1962) at org.apache.commons.dbcp.DelegatingResultSet.getMetaData(DelegatingResultSet.java:283) at mondrian.rolap.sqlitecache.OriginalResultSetInvocationHandler.invoke(OriginalResultSetInvocationHandler.java:44) at com.sun.proxy.$Proxy79.next(Unknown Source) at mondrian.rolap.SqlTupleReader.prepareTuples(SqlTupleReader.java:538) ... 19 more
解决方案
原因一:
OLAP版本与war包版本不匹配,若确认版本不匹配,需要进行更新。
可参考该文档获取不同组件的版本信息:如何获取smartbi当前使用版本信息
原因二:
数据库配置问题。从网上查询相关信息,初步判断是DB2基于jdbc驱动从表中取出CLOB转String报错,可参考网上方案,在smartbi数据源url中添加参数 :progressiveStreaming=2 并在数据库端执行 db2set DB2_RESTRICT_DDF=TRUE,尝试解决该问题,具体可以参考网上的资料:https://blog.csdn.net/m0_60725291/article/details/119542964。