1. 概述
本文主要汇总了 FineReport 10.0 升级至 11.0 后数据连接的常见问题及解决方案,便于大家更好的解决升级过程中遇到的问题。
2. 数据连接问题
2.1 升级后sqlserver连接失败
问题描述:
升级后所有的sql server都连接失败,报错:com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)。如下图所示:
原因分析:
11.0 版本 JDK 默认禁止 TLSv1 和 TLSv1.1 协议,需要修改 tomcat 调用的 JRE 的配置文件,路径为jre\lib\security\java.security,注释掉TLSv1, TLSv1.1
解决方案:
1)Tomcat 独立部署环境:
找到 Tomcat 调用的 JDK,修改 jdk\jre\lib\security\java.security 文件,将 jdk.tls.disabledAlgorithms 中的 TLSv1, TLSv1.1 去掉
2)官网部署包部署环境:
修改tomcat-win64\jdk\jre\lib\security\java.security文件,将 jdk.tls.disabledAlgorithms中的TLSv1, TLSv1.1去掉
2.2 设计器中sqlserver连接失败
问题描述:
升级之后,在设计器中 sqlserver 连接失败。
原因分析:
驱动异常。
解决方案:
点击下载获取新的 sqlserver 驱动:sqljdbc.jar
更换 sqlserver 驱动,放到 lib 下,重启生效即可正常连接。
2.3 升级后测试连接成功,编辑测试连接失败
问题描述:
在数据决策平台中的数据连接,选择测试连接显示连接成功,进入编辑测试连接后,进行数据连接提示连接失败,如下图所示:
解决方案:
更新 JAR 包至 2022-11-16 及之后版本即可。
2.4 升级后数据迁移到sqlserver数据库,迁移失败
原因分析:
迁移的数据库不区分大小写,FineDB 中存在脏数据。
解决方案:
删除 FineDB 里面相关的无效数据,重新迁移。
2.5 升级后informix数据连接失败
问题描述:
升级到 11.0.5 版本后,informix 数据连接失败,报错日志:GetConnectionTimeoutException: wait millis 10000, active 0, maxActive 50, creating 0
原因分析:
11.0.5 之后升级了 druid,由于内置 informix 驱动实现的 JDBC 协议老旧,导致 druid 无法正确保存创建后的连接,继而出现无法连上的问题。
解决方案:
更新 informix 驱动,放到 lib 下,重启生效即可正常连接。
2.6 升级后oracle11g和oracle19c数据连接失败
问题描述:
升级11版本后,oracle11g和oracle19c数据连接失败,报错:GetConnectionTimeoutException: wait millis 10000, active 0, maxActive 50, creating 0。
原因分析:
驱动冲突。
解决方案:
检查 %Tomcat%\webapps\webroot\WEB-INF\lib 下驱动,更换合适的驱动即可。
2.7 升级后impala的连接失败
问题描述:
升级后,原 10.0 的工程中配置 impala 的连接失败。
原因分析:
impala 驱动问题。
解决方案:
检查是否存在 impala 驱动文件,缺失则需要下载对应的驱动文件,可参考:[平台]Apache Impala数据连接
2.8 升级后mysql或者oracle数据连接失败
解决方案:
lib 下对应的驱动问题,手动将 tomcat-win64\webapps\webroot\WEB-INF\lib 下的 mysql、oracle 驱动进行更换即可。
可参考:MySQL数据连接、Oracle数据连接
2.9 自定义驱动包上传失败
解决方案:
1)查找字段 SystemConfig.driverUpload,如果不存在该字段,则点击「添加记录」,新增该字段。
2)修改字段值为 true
重启服务后,能正常添加自定义驱动。可参考:驱动管理
2.10 FineReport 持续向第三方数据集发送请求
问题描述:
升级后产品持续向第三方数据集发送 select 1,一秒一次,如下图所示:
原因分析:
数据连接中设置了数据连接获取连接前校验,导致持续发送校验请求。
解决方案:
登录数据决策系统,进入数据连接,编辑数据连接,将「获取连接前检验」修改为否即可,如下图所示:
2.11 升级后首次新建sqlserver数据连接失败
问题描述:
升级到 11.0.13 版本后,首次打开设计器,新建 sql server 类型的数据连接,首次保存数据连接失败,报错非常抱歉,您当前访问的数据库属于如下类型,系统暂不支持:Microsoft SQL Server,系统支持的数据库类型:,点击取消之后再次新建数据连接保存正常。
解决方案:
更新 FineReport 工程至 11.0.14 及之后版本即可。
3. 数据库/数据集问题
3.1 升级后外接库迁移失败
问题详情:
外接库迁移失败,日志报错“DELETE 语句与 REFERENCE 约束"FKIxxobqny@g02kivod3cblxeoh"冲突”和“不能在对象“dbofine conf entity"中插入重复键”
原因分析:
平台日志迁移插件老版本导致 finedb 表会有大小写两条数据,外接库不区分大小写就会报错违反主键约束。
解决方案:
更新插件到最新版本,将第一次外接库迁移的表清空,二次重新配置外接库迁移即可。
3.2 数据集报错 1301
问题详情:
工程从10.0升级到11.0后,切换到11的远程目录下,操作升级后的模板进行操作(修改数据集sql、控件等)就会报错,模板存到本地目录,打开编辑、预览一切正常,设计器和服务器版本一致。10-11后,所有模板无法保存。
原因分析:
11.0 内置了新引擎和抽数缓存两个模块,老的 server.xml 没有这两个模块的配置,所以不会启动,导致了功能异常
解决方案:
删除 WEB-INF/classes/com/fr/config/server/server.xml 后,重启服务恢复正常
3.3 数据迁移到sqlserver数据库失败
问题详情:
升级到11版本后,配置sqlserver外接数据库,迁移失败,报错“违反了 PRIMARY KEY 约束“PK__QRTZ_CRO__922200A77784281C”。
原因分析:
数据库排序规则设置的是 Chinese_PRC_CI_AS,需要改成 Chinese_PRC_CS_AS(大小写敏感)
解决方案:
数据库配置区分大小写
3.4 数据迁移到mysql数据库失败
问题详情:
升级到11版本后,配置mysql外接数据库,迁移失败,报错“ERROR [com.fr.third.org.hibernate.engine.jdbc.spi.SqlExceptionHelper] Duplicate entry 'QuartzScheduler-weixinCollectBaseInfoTriggerGroup-weixinCollectB' for key 'PRIMARY'”
原因分析:
10-11后,新旧版本的微信插件会添加两个定时任务,名字分别类似 weixinXXX 和 WeiXinXXX,迁移到不区分大小写的外置库时,这两条就被认为是同一条了,就会报错,导致迁移失败
解决方案:
数据库配置区分大小写
3.5 升级后数据显示不全
问题详情:
升级后数据显示不全。
原因一:报表过滤使用 sql 公式编写,相关数据取自 finedb 的表的,从 8.0版本升级至 11.0 后,表名和数据连接方式都变了,需要手动排查问题并改修改 Finedb。
原因二:原外接库的 finedb 里有其他的表,升级后由于表变了数据不一致。
原因一的解决方案:按照帮助文档修改 finedb 数据连接并保存,可参考:FineDB 数据库简介,然后修改 sq l公式的表名。
原因二的解决方案:将原来的表都复制到新的 finedb 里,同时需要修改排序规则。
3.6 升级后 JSON 数据集不可使用
原因分析:
10.0 对空行不敏感,11.0 对空行就敏感导致异常。
解决方案:
删除空行即可。
3.7 升级后 json 数据集取数失败报错:Read timed out
问题详情:
升级后 json 数据集取数失败报错:Read timed out,如下图所示:
原因分析:
插件版本问题
解决方案:
更新 json 数据集插件到 V9.5.11 版本即可。