1. 概述
本文列舉 配置外接資料庫 时,可能出現的報錯和解決方案。
2. 資料庫遷移後升級 JAR ,無法開啟平台
問題描述:
使用者已配置外接資料庫,升級 JAR 後,無法開啟平台,報錯:TASKNAMECALCCULATEATEONCE 标识符和 USERALIAS 标识符无效
原因分析:
進行遷移使用者沒有 alter 權限,無法生成欄位。
解决方案:
給遷移的使用者授權 alter 權限。
3. 使用者 root 登入失敗 ClientConnectionId:XXX
問題現象:
配置外接資料庫時,出現報錯:用户 root 登入失敗,ClientConnectionId:e484a26e-8f2b-4e28-b9e4-32798ec032b7 ,以及外置資料無法連結配置等報錯
原因分析:
報錯是由於 FineReport 外接資料庫的配置錯誤,需要刪除 FineReport 的外接資料庫的配置資訊,重新配置外接資料庫。
解决方案:
删除FineBI/webapps/webroot/WEB-INF/config下的後綴名為 db.properties 檔案,重新對 FineReport 外接資料庫進行配置。
4. 遷移資料庫後,回退JAR包平台登入失敗
問題描述:
報表工程已遷移至外接資料庫,升級 JAR 後,又遷移至另一外接資料庫,回退 JAR,發現平台登入失敗,顯示資料庫連結異常,如下圖所示:
原因分析:
JAR 回退,但儲存外接資料庫配置的 db.properties 檔案沒有跟隨其變化。
解决方案:
檢查 %FineBI_HOME%/webapps/webroot/WEB-INF/config 路徑下 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
5. 叢集環境下 FineDB 遷移失敗
問題描述:
叢集環境下遷移 FineDB 資料庫,使用平台功能遷移,出現如下圖所示的介面後,點選登入會反覆重新整理此介面。
原因分析:
叢集環境下的遷移操作方法出錯。
解决方案:
叢集遷移需要把其他節點關閉,只啟動一個節點進行遷移。
遷移成功後,把 db.properties 檔案複製到沒遷移的節點,然後關閉叢集所有節點再啟動。
6. CAS單點環境下 FineDB 遷移失敗
問題現象:
1)遷移外接資料庫時一直卡在資料匯入階段。
2)後臺存在報錯:database is locked。
3)工程做了 CAS 單點,報錯裏有 CAS 相關的日誌。
原因分析:
遷移時有其他使用者存取了平台,導致部分表被鎖死,無法遷移。
解决方案:
先將 CAS 單點撤掉,保證沒有使用者存取平台。
外接資料庫遷移成功之後,再將 CAS 單點加上。
7. 排程管理任務導致遷移失敗
問題現象:
遷移外接資料庫失敗,報錯:
Null value was assigned to a property [class com.fr.scheduler.quartz.entity.QuartzFiredTriggers.isNonconcurrent] of primitive type setter of com.fr.scheduler.quartz.entity.QuartzFiredTriggers.isNonconcurrent
原因分析:
排程管理執行過程中,FineDB 中的 QRTZ_FIRED_TRIGGERS 表會臨時記錄排程管理資料,任務執行成功後,資料自動刪除。
當排程管理任務執行了一半,資料已生成時,進行外接資料庫遷移操作,暫停排程管理任務失敗,導致遷移失敗。
解决方案:
按照報錯資訊,清空相關表,例如清空 QRTZ_FIRED_TRIGGERS 表資料。
8. MySQL could not execute statement
問題現象:
配置 MySQL 資料庫,匯入資料失敗,頁面前端報錯:could not execute statement;
查看%FineBI%/logs/fanruan.log,報錯為:Table 'finedb.QRTZ_PAUSED_TRIGGER_GRPS' doesn't exist,如下圖所示:
原因分析:
查看 MySQL 的資料引擎,登入MySQL資料庫,在mysql>提示符下輸入show engines 命令查看,顯示為 MyISAM 資料引擎,該資料引擎為 MySQL 預設引擎,不支援交易,也不支援外鍵。且 FineBI 不支援 MyISAM,後續不考慮相容,因此需要為MySQL切換資料引擎為InnoDB;
解决方案:
1)在 MySQL 資料庫配置檔案 my.cnf 中的 [mysqld] 下面加入default-storage-engine=INNODB 一句,儲存;
2)重啓 MySQL 伺服器:mysqladmin -u root -p shutdown或者service mysqld restart。
3)登入 MySQL 資料庫,在mysql>提示符下輸入show engines命令。如果出現 InnoDB |DEFAULT,則表示設定 InnoDB 為預設引擎成功。
9. MySQL could not execute batch
問題描述:
配置外接資料庫 MySQL 報錯,報錯日誌如下所示:
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
匯入成功。
10. MySQL migrate table com.fr.config.entity.Entity failed
問題現象:
配置 MySQL 資料庫,匯入資料的時候報錯:java.lang.Exception: migrate table com.fr.config.entity.Entity failed
解决方案:
1)修改 MySQL 的my.ini文件 ,字元集改為character-set-server=utf8,如下圖所示:
11. MySQL The table 'fine_conf_entity' is full
問題現象:
配置 MySQL 資料庫,匯入資料的時候報錯:java.lang.Exception: migrate table com.fr.config.entity.Entity failed
查看%FineBI%/logs/fanruan.log,報錯:The table 'fine_conf_entity' is full,如下圖所示:
解决方案:
進入 MySQL 的配置檔案/etc/my.cnf,在[mysqld]下新增/修改兩行:
tmp_table_size = 256M
max_heap_table_size = 256M
系統預設是 16M ,修改完後重啓 MySQL 。
12. 資料庫連結失敗 wait millis 10000,active0,maxActive 50
問題現象:
配置 SQL Server 和 Oracle等含有「模式」的資料庫時,出現報錯:数据库连接失败,wait millis 10000,active0,maxActive 50
如下圖所示:
排查思路:
1)應答資料庫名稱,主機位址,埠帳號和密碼是否正確。
2)應答此伺服器此埠是否開放給其他電腦,可在其他地方進行資料庫連結測試。
3)更改模式,使其與資料庫帳號一樣,如下圖所示:
13. Oracle could not execute statement
問題現象:
配置外接資料庫 Oracle 報錯oracle could not execute statement或報錯Oracle could not execute batch。
原因分析:
資料庫模式有誤。
解决方案:
模式填thin就會報錯,將改成帳號即可。
14. Oracle migrate table com.fr.config.entity.Entity failed
問題現象:
配置外接資料庫 Oracle 報錯java.lang.Exception: migrate table com.fr.config.entity.Entity failed
日誌報錯:Caused by: java.sql.BatchUpdateException: ORA-01654: 索引 BI_REPORT_RO.SYS_C0011297 無法透過 128 (在表空间 BI_REPORT_RO 中) 擴展
資料表建立成功,但是匯入資料失敗。
原因分析:
資料庫表空間不足。
解决方案:
預設表空間資料檔案大小與DATA BLOCKS的大小有關,預設最大為32GB。
使用者可透過如下SQL增加表空間資料檔案:
alter tablespace USERS add datafile 'D:appAdministratororadataorclUSERS02.DBF' size 10240M;
15. Oracle19c 資料遷移卡住
問題現象:
Oracle19c資料庫,資料連結成功,但是在配置外接資料庫時一直卡在正在連結狀態。
原因分析:
使用者環境禁用了 PUT、DELETE請求,導致平台一些請求不正常。
解决方案:
使用者可透過安裝「PUT、DELETE請求轉成POST」插件,將 PUT、DELETE 請求轉成 POST 請求。
詳情請參見:PUT、DELETE請求轉成POST插件