使用Lindorm SQL訪問寬表引擎或時序引擎遇到異常時,系統會以錯誤碼的形式將異常或程式錯誤返回給開發人員。您可以在本文的表格中搜尋報錯返回的錯誤編號,快速尋找具體的錯誤資訊及處理建議。
常見錯誤
下表中的錯誤碼與MySQL中的部分服務端錯誤碼相容,您可以依據開發MySQL應用的經驗對它們進行異常處理。如果有無法處理的錯誤,請聯絡Lindorm支援人員(DingTalk號:s0s3eg3)。
其中,SQLSTATE是SQL92標準中定義的SQL層級錯誤的分類規範,用於在應用程式中進行分類異常處理。
錯誤碼 | SQLSTATE | 錯誤訊息格式 | 處理建議 |
1005 | HY000 | Can't create table '%s' | 無法建立表,請根據錯誤訊息檢查建表語句的用法是否正確。 |
1006 | HY000 | Can't create database '%s' (errno: %d - %s) | 無法建立Database, 請根據錯誤訊息,檢查輸入的參數是否正確。 |
1007 | HY000 | Can't create database '%s'; database exists | 該Database已存在,請使用其他名稱建立。 |
1008 | HY000 | Can't drop database '%s'; database doesn't exist | 該Database不存在,無法進行刪除,請提供正確的Database名稱。 |
1009 | HY000 | Error dropping database (can't delete '%s', errno: %d - %s) | 刪除Database失敗,請從錯誤訊息中擷取失敗原因。 若依然無法解決,請聯絡Lindorm支援人員尋求解決方案。 |
1030 | HY000 | Got error %s from storage engine: %s | 儲存引擎無法歸類的錯誤。請將佔位符中的錯誤資訊留存並聯絡Lindorm支援人員尋求解決方案。 |
1040 | 08004 | Too many connections (current limit: %d) | 單個節點上的串連數過多(預設串連數上限:1000)。可以嘗試重新建立串連,但若執行個體的每個節點串連數都達到上限時,建議優先重新審視業務代碼中對於串連的使用方式。 若仍然無法解決,請聯絡Lindorm支援人員尋求解決方案。 |
1045 | 28000 | Access denied for '%s' | 認證失敗。請確認所用使用者的認證資訊是否存在記憶錯誤,筆誤等情況並輸入正確的認證資訊。 |
1043 | 28000 | Bad handshake: %s | 嘗試建立 MySQL協議的串連時,串連的初始化階段失敗。建議根據訊息中的詳細資料嘗試排查。 若仍然無法解決,請聯絡Lindorm支援人員尋求解決方案。 |
1046 | 3D000 | No database selected | 串連操作中未指定任何一個Database。重新審視串連設定並顯式指定一個Database。 |
1049 | 42000 | Unknown database '%s' | 未知Database,請指定需要訪問的Database。 |
1050 | 42S01 | Table '%s' already exists | 該表已經存在,請使用其他表名稱。 |
1054 | 42S22 | Unknown column '%s' | 操作了一個無法被識別的列名。請確認SQL中顯式指定的列名是否都是實際存在的。 |
1060 | 42S21 | Duplicate column name '%s' | 語句中指定了重複的列名。請確認SQL中顯式指定的列名存在重複。 |
1064 | 42000 | You have an error in your SQL syntax; %s | SQL語句中存在語法錯誤,請參考SQL文法文檔進行校正。SQL文法文檔,請參見SQL參考。 |
1082 | 42S12 | Table '%s' has no index like the one used in CREATE INDEX; recreate the table | 表中不存在與CREATE INDEX中索引類似的索引,建議重新建立表。 |
1146 | 42S02 | Table '%s.%s' doesn't exist | 該表不存在,請檢查是否輸入的名稱有誤。 |
1170 | 42000 | BINARY/CHAR column '%s' used in column specification without a key length | 指定部分資料類型時沒有指定長度,請重新審視建表語句為類似BINARY/CHAR這樣的類型顯式指定長度。 |
1211 | 42000 | '%s'@'%s' is not allowed to create new users; %s | 當前操作的使用者沒有建立新使用者的許可權。請先為目前使用者申請足夠的許可權。 |
1227 | 42501 | Access denied: %s | 確認所使用使用者的真實許可權,確保對訪問對象擁有足夠的許可權。 |
1243 | HY000 | Unknown prepared statement id (%d) | 找不到所需的預準備語句。該異常有可能發生在先準備語句,再綁定動態參數的執行模式下。建議重新準備一下語句。 若依然無法解決,請聯絡Lindorm支援人員尋求解決方案。 |
1251 | 08004 | Client does not support authentication protocol requested by server; consider upgrading MySQL client | 基於MySQL協議串連Lindorm時,所用用戶端的驅動不支援服務端所需的使用者認證方法。建議參考Lindorm的MySQL協議相容文檔,顯式指定支援的認證方法,或者升級所用的用戶端驅動。 |
1295 | HY000 | This command is not supported in the prepared statement protocol yet | 不支援預準備語句時同時指定多條語句,建議修改預準備語句的指定方式。 |
1461 | 42000 | 在單一節點上同時預準備的語句數超過上限(預設上限:10000)。建議重新審視業務應用,修改SQL語句的預準備邏輯,避免同時準備過多語句。 | |
1470 | HY000 | String '%s' is too long for %s (should be no longer than %d) | 指定的對象名稱過長。 建議根據錯誤訊息中提示的長度修改建立資料對象時指定的名稱。 |
1815 | HY000 | Internal error: %s | 無法歸類的內部異常。 請聯絡Lindorm支援人員尋求解決方案。 |
擴充錯誤
下表中的錯誤是Lindorm擴充出的一些異常情境,您可以根據下述處理建議並結合相應的SQLSTATE含義在業務代碼中進行處理。如果有無法處理的錯誤,請聯絡Lindorm支援人員(DingTalk號:s0s3eg3)。
錯誤碼 | SQLSTATE | 錯誤訊息格式 | 處理建議 |
1973 | 42000 | Can't create user '%s'; it already exists | 正在嘗試建立一個已存在的使用者。建議重新檢查已有使用者。 |
1974 | 42000 | Can't drop user '%s'; it doesn't exist | 正在嘗試刪除一個不存在的使用者。建議重新檢查已有使用者。 |
1975 | 42000 | Can't alter user '%s'; it doesn't exist | 正在嘗試修改一個不存在的使用者。建議重新檢查已有使用者。 |
1976 | 42000 | Can't alter user '%s'; %s | 無法執行修改指定的使用者。建議按照錯誤訊息所指示的內容進行排查。 若仍然無法解決,請聯絡Lindorm支援人員尋求解決方案。 |
3002 | 42L01 | Inconsistent usage of database '%s' and '%s' | 當前操作的目標Database與當前串連的Database不一致。 建議修改相關串連屬性或者使用USE語句切換當前使用的Database。 |
3024 | HY000 | Query execution was interrupted, maximum statement execution time exceeded | 查詢逾時,請重試。 若重試依然逾時,請聯絡Lindorm支援人員尋求解決方案。 |
3025 | HY000 | Query execution was canceled | 當前擷取結果中的查詢已在別處被中止。 建議重試查詢操作。 |
3163 | HY000 | %s | 使用者已存在。建議重新檢查已有使用者。 |
8000 | HY000 | Can't alter database '%s' (errno: %d - %s) | 無法修改Database,請根據錯誤訊息,檢查輸入的參數是否有誤。 |
8001 | HY000 | Can't create continuous query '%s' (errno: %d - %s) | 無法建立連續查詢(continuous query),請根據錯誤訊息,檢查輸入的參數是否有誤。 |
8002 | HY000 | Can't create continuous query '%s'; continuous query exists | 該連續查詢(continuous query)已經存在,請使用其他名稱進行建立。 |
8004 | HY000 | Continuous query '%s.%s' doesn't exist | 該連續查詢(continuous query)不存在,請檢查輸入的名稱是否有誤。 |
8005 | HY000 | Table '%s' not found | 表不存在,請檢查表的名稱是否有誤。 |
8006 | HY000 | Query failed; %s | 查詢失敗,請根據錯誤訊息分析錯誤原因。 若依然無法解決,請聯絡Lindorm支援人員尋求解決方案。 |
8007 | HY000 | Insert failed; %s | 寫入失敗,請根據錯誤訊息分析錯誤原因。 若依然無法解決,請聯絡Lindorm支援人員尋求解決方案。 |
8008 | HY000 | Quota exceeded; %s | 超出資源限制,請根據錯誤訊息提示處理。 如果操作是資料查詢,請縮小查詢時間範圍,或者增加WHERE條件,減少查詢命中的資料量。 如果操作是資料寫入,請限制寫入TPS。 |
8009 | HY000 | Can't drop predownsample; %s | 無法刪除指定的預降採樣,請根據錯誤訊息分析錯誤原因。 若依然無法解決,請聯絡Lindorm支援人員尋求解決方案。 |
8010 | HY000 | Can't show predownsample; %s | 無法查看指定的預降採樣,請根據錯誤訊息分析錯誤原因。 若依然無法解決,請聯絡Lindorm支援人員尋求解決方案。 |
8011 | 42000 | Unknown data type: %s | 無法識別的資料類型。 資料讀寫過程中的實際資料類型與預期資料類型存在衝突。 建議根據錯誤訊息中的具體原因進行處理。 若依然無法解決,請聯絡Lindorm支援人員尋求解決方案。 |
8012 | 42000 | Illegal operation: %s | SQL語句的用法錯誤, 或者是隨語句輸入的相關資料存在問題。建議對照文法手冊的文檔重新審視指定的 SQL 陳述式。 |
8013 | 42000 | Cannot grant privilege '%s' to: %s; %s | GRANT許可權失敗。請根據錯誤訊息分析錯誤原因。 |
8014 | 42000 | Cannot revoke privilege '%s' to: %s; %s | REVOKE許可權失敗。請根據錯誤訊息分析錯誤原因。 |
8015 | HY000 | Failed to alter parameter; %s | 修改系統配置失敗。請根據錯誤訊息分析錯誤原因。 |
8016 | HY000 | Failed to show parameter; %s | 展示系統配置失敗。請根據錯誤訊息分析錯誤原因。 |
8017 | 42611 | Column name "%s" conflicts with a system column name | DDL中指定的列名與系統隱藏列重名。建議根據錯誤訊息中的具體原因進行列名改名。 |
8018 | 42000 | DECIMAL column '%s' type should be specified with precision and scale | DDL中指定DECIMAL資料類型時需要指定Precision和Scale。 建議對照文法手冊的文檔重新審視指定的SQL語句。 |
8100 | 08003 | The connection does not exist; %s | 嘗試複用的串連會話已經被服務端釋放。 建議重建串連。 |
9000 | HY000 | Server internal error; %s | 請聯絡Lindorm支援人員尋求解決方案。 |
9001 | 0A000 | UNSUPPORTED: %s | 不支援該文法。請對照SQL文法文檔,避免使用尚不支援的SQL文法。 |
9002 | HY000 | Function %s can only be used in domain-specific dialect (Time-series, etc.) | 指定的函數不是一個通用函數,只能用於特定方言中(如面向時序引擎的方言)。 建議對照文法手冊的文檔重新審視指定的SQL語句。 |
9003 | 28000 | The authentication method %s cannot apply to the old-fashion user, please consider to use another method. | 建立串連時使用的認證方法無法適用於在舊版本引擎上建立的使用者。 詳情說明,請參見MySQL協議開發說明中的注意事項。 建議參考Lindorm的MySQL協議相容文檔,顯式指定支援的認證方法,或升級所用的用戶端驅動。 |
9004 | 08004 | The authentication method %s not available for the current deployment, please consider to use another method. | 建立串連時使用的認證方法在當前執行個體的部署形態上無法使用。 建議參考Lindorm的MySQL協議相容文檔,顯式指定支援的認證方法,或升級所用的用戶端驅動 |
9006 | HY000 | Analytical processing error; %s | 分析型查詢執行錯誤。 請將佔位符中的錯誤資訊留存並聯絡Lindorm支援人員尋求解決方案。 |
9010 | XX000 | The storage engine request illegal: %s | 儲存引擎內部通訊請求非法。 請將佔位符中的錯誤資訊留存並聯絡Lindorm支援人員尋求解決方案。 |
9011 | HY000 | Database protocol error: %s | MySQL協議報文錯誤。 請將佔位符中的錯誤資訊留存並聯絡Lindorm支援人員尋求解決方案。 |