串連資料來源時,可能遇到配置問題、效能問題、資料一致性問題等。本文介紹串連資料來源和使用資料來源時,遇到的常見問題及相應的解決方案。
串連問題
資料來源串連失敗或逾時
若您在串連資料來源時出現報錯,請優先排查以下原因:
對於資料庫類的資料來源,請確保正確設定資料庫白名單。
阿里雲資料庫:請在資料庫白名單與安全性群組配置中添加指定IP地址。
阿里雲ECS上自建資料庫:請在ECS的添加安全性群組規則、系統防火牆和資料庫白名單添加指定IP地址 。
本地的自建資料庫:請在該物理機的系統防火牆、網路防火牆和資料庫白名單添加指定IP地址。
請確認網路類型與資料來源實際類型是否一致。
當填寫外網地址時,網路類型請選擇外網。
當填寫內網VPC地址時,網路類型請選擇內網並開啟VPC訪問。
資料庫帳號或者AccessKey ID沒有需要的許可權。
請確保資料庫使用者名稱擁有List許可權,以便擷取資料表列表。
請確保AccessKey ID擁有Read許可權,以便訪問執行個體。
資料代理服務串連失敗,請參見資料代理請求常見問題。
若以下完全正確,仍然連線逾時,可能是DataV-Board的10秒連線逾時限制。逾時問題,具體可參考效能問題。
若仍串連失敗,請複製完整錯誤資訊,聯絡我們進行問題排查。
MySQL 8.0 資料庫報錯
在使用 MySQL 8.0 時,可能會遇到如下錯誤提示:
ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client這個錯誤是由於 MySQL 8.0 預設使用了一種新的認證外掛程式(caching_sha2_password),而DataV-Board不支援這種加密方式,導致無法串連到資料庫。將認證外掛程式修改為較老版本的 mysql_native_password,即可解決問題。以下是步驟:
登入MySQL資料庫: 使用具有足夠許可權的使用者(如root)登入到MySQL伺服器。
mysql -u root -p切換認證外掛程式: 對於需要更改的特定使用者,執行以下SQL語句來更新其認證外掛程式:
ALTER USER 'your_username'@'host' IDENTIFIED WITH mysql_native_password BY 'your_password';your_username:替換為目標使用者的使用者名稱。
host:替換為該使用者串連到資料庫的主機名稱(通常為localhost或%)。
your_password:替換為該使用者的密碼。
重新整理許可權: 確保更改立即生效,執行以下命令重新整理許可權:
FLUSH PRIVILEGES;查看外掛程式是否更新成功。
SELECT user, host, plugin FROM mysql. user WHERE user = 'your_username' ;退出MySQL: 完成配置更改後,退出MySQL用戶端:
EXIT;
效能問題
DataV-Board設定了資料庫請求時間限制,即如果資料查詢時間超過10秒,就會報請求逾時的錯誤。
業務資料表數量太大,導致SQL查詢逾時
您可嘗試通過以下幾種方式提高查詢效能:
針對查詢條件所使用的欄位添加索引,減少掃描行數,從而加速查詢。
在資料庫中增加定時任務,定時計算所需要的業務指標並更新結果表。組件直接查詢結果表的資料,無需每次執行SQL查詢擷取組件資料。
通過自建API 服務(需支援跨域),從而避免查詢逾時。
通過DataV資料代理服務方式,突破系統10秒連線逾時限制。
API介面內部業務調用鏈路較長,導致查詢逾時
如果讀取資料來源超過了DataV的逾時時間,就意味著查詢資料的方式較為複雜,可以通過最佳化查詢時間的方式來處理。您可嘗試通過以下3種方式提高查詢效能:
為API服務設計緩衝空間,針對常用的資料進行高效緩衝,減少多次調用讀取耗時。
最佳化調用鏈路,將可以並行調用的過程並行化處理,壓縮介面總時間。
增加資料中介層,將多次介面調用的中間鏈路複用,減少系統消耗。
具體的最佳化方案要結合查詢本身的技術特徵、業務資料的邏輯關係以及相關技術架構等來考慮和設計。
資料安全性問題
系統預設採取使用TLS加密協議,保護您的資料安全。 若您有所顧忌,可採取以下兩種方式:
使用DataV資料代理服務方式,無需暴露資料庫的公網IP,就可以串連自建的資料庫,提高資料安全性。
可使用尊享版本進行本地部署,具體操作請參見產品升級。
資料一致性問題
系統不緩衝任何資料,每次請求均擷取資料來源最新資料,以保證資料一致性。
資料配置問題
當資料來源添加成功後,進入畫布中進行使用。您需通過資料對應、SQL語句、過濾器等各種方式將資料來源資料改造成組件所支援資料結構,方可正常展示效果。
組件配置資料來源時,請求報逾時
當資料來源添加成功,但使用時存在連線逾時。可能是以下幾個原因:
SQL語句過於複雜,導致連線逾時。
解決方案:建議您最佳化查詢SQL語句,或者調整表結構來縮短查詢時間長度。
組件自動更新請求設定間隔較短,同時組件資料查詢時間較長,會觸發Chrome瀏覽器同一網域名稱同一時間最多隻能發起6個HTTP請求的限制,導致後面的請求pending在瀏覽器中無法發送至服務端。
解決方案:建議您調整自動更新請求間隔時間長度,或最佳化SQL語句來縮短資料返回時間。
配置CSV資料來源
設定CSV的首行為表頭,並且表頭名需要和相應圖表中要求的資料結構欄位名保持一致。以Echarts 柱狀圖為例,表頭應為x座標軸值、y座標軸值、系列值。
回調ID為數組時SQL編寫
假設idList為您配置的回調ID數組。
當您使用普通SQL查詢時:
select * from tb where id in (:idList)當您使用資料庫預存程序查詢時:
call myFunc(concat_ws(',', :idList))說明myFunc為自訂的預存程序名稱。
輪播列表SQL編寫
通過SQL設定別名方式,將欄位名設定成欄欄位名進行SQL查詢即可。
select field1 as “列1”, filed2 as "列2", field3 as "列3" from table組件配置API資料來源時報錯:Unexpected end of JSON input
問題描述:組件配置API資料來源POST介面時提示資料來源請求錯誤。
問題原因:未明確指定請求體是JSON格式,伺服器嘗試以預設解析時觸發錯誤。
解決方案:DataV設定資料來源時需要在Headers裡加上 { "Content-Type": "application/json" }。
說明API 請求是指嚮應用程式編程介面(API)發送一種請求,需要根據API文檔配置HTTP方法、URL、要求標頭、請求體等。出現Unexpected end of JSON input錯誤通常是因為要求標頭中缺少必要的Content-Type聲明導致伺服器未能正確解析請求體。要求標頭中的中繼資料(如內容類型、認證資訊等)會指導伺服器如何處理請求,因此只需在要求標頭中明確指定{"Content-Type": "application/json"},即可確保伺服器正確解析JSON請求體。