1. 概述
本文列舉 配置外接數據庫 時,可能出現的報錯和解決方案。
2. 示例
2.1 數據庫連接失敗
問題現象:
當出現配置 SQL Server 和 Oracle等含有模式的數據庫時,出現報錯:數據庫連接失敗,wait millis 10000,active0,maxActive 50
如下圖所示:
解決方案:
首先要确認數據庫名稱,主機地址,端口用戶名和密碼是否正确,再确認此服務器此端口是否開放給其他電腦。可在其他地方進行數據庫連接測試。
其次若确認完畢後仍出現報錯,則需要更改模式使其與用戶名一樣,可解決這個問題
如下圖畫紅框部分:
2.2 用戶 root 登錄失敗
問題現象:
報錯信息爲:用戶 root 登錄失敗,ClientConnectionId:e484a26e-8f2b-4e28-b9e4-32798ec032b7 ,以及外置數據無法連接配置等報錯
解決方案:
第二種報錯是由於 FineReport 外置數據庫的配置錯誤,則需要删除 FineReport 的外置數據庫的配置信息,進行外置數據庫重新配置。
删除FineReport_10.0webappswebrootWEB-INFconfig下的後綴名爲 db.properties 文件。然後就可以重新對 FineReport 外置數據庫進行配置
2.3 could not execute batch
問題描述:
配置外接數據庫 MySQL 報錯 could not execute batch
報錯日志如下所示:
16:59:48 Thread-45 ERROR [standard] could not execute batch
com.fr.third.org.hibernate.exception.GenericJDBCException: could not execute batch
......Caused by: java.sql.SQLException:Incorrect string value: 'xE6xA8xA1xE6x9DxBF...' for column 'id' at row 1
原因分析:
檢查确保是有權限的
Incorrect string value: 'xE6xA8xA1xE6x9DxBF...' for column 'id' at row 1 應當是數據庫編碼的原因。
解決方案:
查看客戶建 FineDB 數據庫的語句:create database finedb
發現沒有加約束條件,将語句改爲:create database finedb DEFAULT CHARSET utf8 COLLATE utf8_bin
導入成功。
2.4 Oracle could not execute batch
問題描述:
配置外接數據庫 Oracle 報錯 Oracle could not execute batch
解決方案:
模式填thin就會報錯,改成用戶名。
2.5 外接 Oracle9i 數據遷移失敗
問題描述:
外接 Oracle9i 數據庫時,數據遷移中途卡住,數據遷移失敗。
解決方案:
Oracle9i 對數據庫表的數據長度有限制,swift 表數據過長導緻遷移至 Oracle9i 失敗。
先将工程目錄下 fine-swift-log-adaptor-10.0.jar 包删除,重啓工程後再執行數據遷移即可,jar 包路徑 %FR_HOME%designerbackup2019.05.29.16.38.25.702fine-swift-log-adaptor-10.0.jar
注:數據遷移成功後,将 jar 包重新放回工程并重啓,swift 表中數據會重新配置且之前的日志無法查詢。
2.6 集群環境下 FineDB 遷移失敗
問題描述:
集群環境下遷移 FineDB 數據庫,使用平台功能遷移,出現如下圖所示的界面後,點擊登錄會反複刷新此界面。
原因分析:
集群環境下的遷移操作方法出錯。
解決方案:
需要把一個節點關了,然後對另一個節點進行遷移,遷移成功後,把 config 文件複制到沒遷移的節點,然後再啓動。
2.7 數據庫遷移後升級 JAR ,無法打開平台
問題描述:
用戶已配置外接數據庫,升級 JAR 後,無法打開平台,報錯:TASKNAMECALCCULATEATEONCE 标識符和 USERALIAS 标識符無效
原因分析:
進行遷移用戶沒有 alter 權限,無法生成字段。
解決方案:
給遷移的用戶授權 alter 權限。
2.8 升級 JAR ,遷移數據庫後,回退 JAR ,平台登錄失敗
問題描述:
報表工程已遷移至外接數據庫,升級 JAR 後,又遷移至另一外接數據庫,回退 JAR,發現平台登錄失敗,顯示數據庫連接異常,如下圖所示:
原因分析:
JAR 回退,但存儲外接數據庫配置的 db.properties 文件沒有跟随其變化。
解決方案:
檢查 %FR_HOME%webappswebrootWEB-INFconfig 路徑下 db.properties 文件,手動修改相關配置。
舉例:一工程遷移到 MySQL8 數據庫,升級 JAR 後 重新遷移到 MySQL5.7.28 數據庫,回退工程,啓動失敗,前台顯示連接不上數據庫,将db. properties中方言的 8 改爲 5 即可。
修改前:
hibernate.dialect=com.fr.third.org.hibernate.dialect.MySQL8Dialect
修改後:
hibernate.dialect=com.fr.third.org.hibernate.dialect.MySQL5Dialect