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