最新历史版本 :外接資料庫配置常見問題 返回文檔
編輯時間: 內容長度:图片数:目录数: 修改原因:

目錄:

1. 概述编辑

本文列舉 配置外接資料庫 時,可能出現的報錯和解決方案。

2. 資料庫遷移後升級 JAR ,無法開啟平台编辑

問題描述:

使用者已配置外接資料庫,升級 JAR 後,無法開啟平台,報錯:TASKNAMECALCCULATEATEONCE 識別符號和 USERALIAS 識別符號無效

原因分析:

進行遷移使用者沒有 alter 權限,無法生成欄位。

解決方案:

給遷移的使用者授權 alter 權限。

3. 使用者 root 登入失敗 ClientConnectionId:XXX编辑

問題現象:

配置外接資料庫時,出現報錯:使用者 root 登入失敗,ClientConnectionId:e484a26e-8f2b-4e28-b9e4-32798ec032b7 ,以及外置資料無法連結配置等報錯

原因分析:

報錯是由於 FineDataLink 外接資料庫的配置錯誤,需要刪除 FineDataLink 的外接資料庫的配置資訊,重新配置外接資料庫。

解決方案:

刪除%FineDataLink%\webapps\webroot\WEB-INF\config下的後綴名為 db.properties 檔案,重新對 FineDataLink 外接資料庫進行配置。

4. 遷移資料庫後,回退JAR包平台登入失敗编辑

問題描述:

工程已遷移至外接資料庫,升級 JAR 後,又遷移至另一外接資料庫,回退 JAR,發現平台登入失敗,顯示資料庫連結異常,如下圖所示:

原因分析:

JAR 回退,但儲存外接資料庫配置的 db.properties 檔案沒有跟隨其變化。

解決方案:

檢查%FineDataLink%\webapps\webroot\WEB-INF\config路徑下 db.properties 檔案,手動修改相關配置。

舉例:一工程遷移到 MySQL8 資料庫,升級 JAR 後重新遷移到 MySQL5.7.16 資料庫,回退工程,啟動失敗,前台顯示連結不上資料庫,將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. Table 'finedb.QRTZ_PAUSED_TRIGGER_GRPS' doesn't exist编辑

問題現象:

配置 MySQL 資料庫,匯入資料失敗,頁面前端報錯:could not execute statement

查看%FineDataLink%\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 為預設引擎成功。

7. Incorrect string value: 'xxx' for column 'id' at row 1编辑

問題描述:

配置外接資料庫 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

匯入成功。

8. 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

匯入成功。

9. 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,如下圖所示:

10. MySQL The table 'fine_conf_entity' is full编辑

問題現象:

配置 MySQL 外接資料庫,匯入資料的時候報錯:java.lang.Exception: migrate table com.fr.config.entity.Entity failed

查看%FineDataLink%\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 。

11. Incorrect string value: 'xxx' for column 'id' at row 1编辑

問題描述:

配置外接資料庫 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

匯入成功。

12. 資料庫連結失敗 wait millis 10000,active0,maxActive 50

問題現象:

配置 SQL Server 和 Oracle 等含有「模式」的資料庫時,出現報錯:資料庫連結失敗,wait millis 10000,active0,maxActive 50

如下圖所示:

排查思路:

1)確認資料庫名稱,主機地址,埠帳號和密碼是否正確。

2)確認此伺服器此埠是否開放給其他電腦,可在其他地方進行資料庫連結測試。

3)更改模式,使其與資料庫帳號一樣,如下圖所示:

13. ORA-01654: 索引無法透過128(在表空間xxx中)擴展

問題現象:

配置外接資料庫 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;

14. Oracle19c 資料遷移卡住

問題現象:

Oracle19c資料庫,資料連結成功,但是在配置外接資料庫時一直卡在正在連結狀態。

原因分析:

使用者環境禁用了 PUT、DELETE請求,導致平台一些請求不正常。

解決方案:

使用者可透過安裝「PUT、DELETE請求轉成POST」插件,將 PUT、DELETE 請求轉成 POST 請求。

15. Oracle could not execute statement编辑

問題現象:

配置外接資料庫 Oracle 報錯oracle could not execute statement或報錯Oracle could not execute batch

原因分析:

資料庫模式有誤。

解決方案:

模式填thin就會報錯,將改成帳號即可。

16. 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:\app\Administrator\oradata\orcl\USERS02.DBF' size 10240M;