本文列舉 配置外接資料庫 時,可能出現的報錯和解決方案。
問題描述:
使用者已配置外接資料庫,升級 JAR 後,無法開啟平台,報錯:TASKNAMECALCCULATEATEONCE 識別符號和 USERALIAS 識別符號無效
原因分析:
進行遷移使用者沒有 alter 權限,無法生成欄位。
解決方案:
給遷移的使用者授權 alter 權限。
問題現象:
配置外接資料庫時,出現報錯:使用者 root 登入失敗,ClientConnectionId:e484a26e-8f2b-4e28-b9e4-32798ec032b7 ,以及外置資料無法連結配置等報錯
報錯是由於 FineReport 外接資料庫的配置錯誤,需要刪除 FineReport 的外接資料庫的配置資訊,重新配置外接資料庫。
刪除FineBI/webapps/webroot/WEB-INF/config下的後綴名為 db.properties 檔案,重新對 FineReport 外接資料庫進行配置。
報表工程已遷移至外接資料庫,升級 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
叢集環境下遷移 FineDB 資料庫,使用平台功能遷移,出現如下圖所示的介面後,點選登入會反覆重新整理此介面。
叢集環境下的遷移操作方法出錯。
叢集遷移需要把其他節點關閉,只啟動一個節點進行遷移。
遷移成功後,把 db.properties 檔案複製到沒遷移的節點,然後關閉叢集所有節點再啟動。
1)遷移外接資料庫時一直卡在資料匯入階段。
2)後臺存在報錯:database is locked。
3)工程做了 CAS 單點,報錯裏有 CAS 相關的日誌。
遷移時有其他使用者存取了平台,導致部分表被鎖死,無法遷移。
先將 CAS 單點撤掉,保證沒有使用者存取平台。
外接資料庫遷移成功之後,再將 CAS 單點加上。
遷移外接資料庫失敗,報錯:
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 表資料。
配置 MySQL 資料庫,匯入資料失敗,頁面前端報錯:could not execute statement;
接着查看%FineBI%/logs/fanruan.log,報錯為:Table 'finedb.QRTZ_PAUSED_TRIGGER_GRPS' doesn't exist
排查步驟一:
MySQL資料庫的編碼不正確,字元集應當為 utf8 ,排序規則為 utf8_bin。
修改資料庫編碼,使用utf8編碼,不支援 utf8mb4 編碼
排查步驟二:
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 為預設引擎成功。
配置外接資料庫 MySQL 報錯,報錯日誌如下所示:
16:59:48 Thread-45 ERROR [standard] could not execute batchcom.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
匯入成功。
配置 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 = 256Mmax_heap_table_size = 256M系統預設是 16M ,修改完後重啟 MySQL 。
配置 SQL Server 和 Oracle等含有「模式」的資料庫時,出現報錯:資料庫連結失敗,wait millis 10000,active0,maxActive 50
如下圖所示:
排查思路:
1)確認資料庫名稱,主機地址,埠帳號和密碼是否正確。
2)確認此伺服器此埠是否開放給其他電腦,可在其他地方進行資料庫連結測試。
3)更改模式,使其與資料庫帳號一樣,如下圖所示:
配置外接資料庫 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;
Oracle19c資料庫,資料連結成功,但是在配置外接資料庫時一直卡在正在連結狀態。
使用者環境禁用了 PUT、DELETE請求,導致平台一些請求不正常。
使用者可透過安裝「PUT、DELETE請求轉成POST」插件,將 PUT、DELETE 請求轉成 POST 請求。
詳情請參見:PUT、DELETE請求轉成POST插件
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙