官方文檔
以下是TiDB 錯誤對照碼(8/9開頭的是TiDB的錯誤碼)
錯誤碼 | 錯誤信息 | 問題原因 |
---|---|---|
8001 |
空 |
請求使用的內存超過 TiDB 內存使用的閾值限制 |
8002 |
空 |
帶有 SELECT FOR UPDATE 語句的事務,在遇到寫入衝突時,爲保證一致性無法進行重試,事務將進行回滾並返回該錯誤 |
8003 |
空 |
ADMIN CHECK TABLE 命令在遇到行數據跟索引不一致的時候返回該錯誤 |
8004 |
空 |
單個事務過大 |
8005 |
Write Conflict, txnStartTS is stale |
事務在 TiDB 中遇到了寫入衝突; 可以檢查 tidb_disable_txn_auto_retry 是否爲 on。 如果是,將其設置爲 off;如已經是 off,將 tidb_retry_limit 調大到不再發生該錯誤。 |
9001 |
PD Server Timeout |
請求 PD 超時,請檢查 PD Server 狀態/監控/日誌以及 TiDB Server 與 PD Server 之間的網絡; 這個報錯一般是 TiDB 訪問 PD 出了問題,TiDB 後臺有個 worker 會不斷地從 PD 查詢 safepoint,如果超過 100s 查不成功就會報這個錯 一般是因爲 PD 磁盤操作過忙、反應過慢,或者 TiDB 和 PD 之間的網絡有問題。 |
9002 |
TiKV Server Timeout |
請求 TiKV 超時,請檢查 TiKV Server 狀態/監控/日誌以及 TiDB Server 與 TiKV Server 之間的網絡; |
9003 |
TiKV Server is Busy |
TiKV 操作繁忙,一般出現在數據庫負載比較高時,請檢查 TiKV Server 狀態/監控/日誌; |
9004 |
Resolve Lock Timeout |
清理鎖超時,當數據庫上承載的業務存在大量的事務衝突時,會遇到這種錯誤,請檢查業務代碼是否有鎖爭用; |
9005 |
Region is unavailable |
訪問的 Region 不可用,某個 Raft Group 不可用,如副本數目不足,出現在 TiKV 比較繁忙或者是 TiKV 節點停機的時候,請檢查 TiKV Server 狀態/監控/日誌; |
9006 |
GC life time is shorter than transaction duration |
GC Life Time 間隔時間過短,長事務本應讀到的數據可能被清理了,可使用如下命令增加 GC Life Time : update mysql.tidb set variable_value='30m' where variable_name='tikv_gc_life_time'; 其中 30m 代表僅清理 30 分鐘前的數據,這可能會額外佔用一定的存儲空間。 |
9007 |
Write Conflict |
事務在 TiKV 中遇到了寫入衝突,可以檢查 tidb_disable_txn_auto_retry 是否爲 on。如是,將其設置爲 off;如已經是 off,將 tidb_retry_limit 調大到不再發生該錯誤。; |
2013 |
Lost connection to MySQL server during query |
log 中是否有 panic dmesg 中是否有 oom,命令: dmesg -T | grep -i oom 長時間沒有訪問,也會收到這個報錯,一般是 tcp 超時導致的,tcp 長時間不用, 會被操作系統 kill。 |
1105 |
other error: unknown error Wire Error(InvalidEnumValue(4004)) |
這類問題一般是 TiDB 和 TiKV 版本不匹配,在升級過程儘量一起升級,避免版本 mismatch。 |
1148 |
the used command is not allowed with this TiDB version |
這個問題是因爲在執行 LOAD DATA LOCAL 語句的時候,MySQL 客戶端不允許執行此語句(即 local_infile 選項爲 0)。 解決方法是在啓動 MySQL 客戶端時,用 --local-infile=1 選項。 具體啓動指令類似: mysql --local-infile=1 -u root -h 127.0.0.1 -P 4000 。 有些 MySQL 客戶端需要設置而有些不需要設置,原因是不同版本的 MySQL 客戶端對 local-infile 的默認值不同。 |
EOF |
空 |
當客戶端或者 proxy 斷開連接時,TiDB 不會立刻察覺連接已斷開,而是等到開始往連接返回數據時,才發現連接已斷開,此時日誌會打印 EOF 錯誤。 |