本文為您介紹SQL錯誤碼列表、觸發條件及處理方法。
該類型錯誤的錯誤碼編碼格式如下。
ODPS-01CCCCX:通用描述 - 上下文相關說明
SQL錯誤包含META(CCCC段為1000~1999)、PROCESSOR(CCCC段為2000~2999)、PARSER(CCCC段為3000~3999)和PLANNER(CCCC段為4000~4999)模組錯誤。具體錯誤碼列表如下。ODPS-0110011:Authorization exception
- 模組:META。
- 嚴重等級:1。
- 觸發條件:許可權不足。
- 處理方法:請根據提示資訊,聯絡專案所有者授予對應操作許可權。更多許可權資訊,請參見MaxCompute許可權。
ODPS-0110021:Invalid parameters
- 模組:META。
- 嚴重等級:1。
- 觸發條件:非法參數。
- 處理方法:檢查並修改輸入參數,確保滿足入參要求。
ODPS-0110031:Invalid object type
- 模組:META。
- 嚴重等級:1。
- 觸發條件:非法物件類型。
- 處理方法:檢查並修改輸入對象,確保滿足物件類型要求。
ODPS-0110041:Invalid meta operation - AlreadyExistsException(message:Partition already exists, existed values:)
- 模組:META。
- 嚴重等級:1。
- 觸發條件:MaxCompute對正在操作的表沒有鎖機制。這個錯誤是由中繼資料產生競爭導致,向同一個分區同時多次執行讀寫操作容易產生此類錯誤。
- 處理方法:在MaxCompute還沒有鎖機制的情況下,不要同時對一個表執行操作。
ODPS-0110061: Failed to run ddltask - AlreadyExistsException(message:Partition already exists, existed values:)
- 模組:META。
- 嚴重等級:1。
- 觸發條件:MaxCompute對正在操作的表沒有鎖機制。這個錯誤是由中繼資料產生競爭導致,向同一個分區同時多次執行讀寫操作容易產生此類錯誤。
- 處理方法:在MaxCompute還沒有鎖機制的情況下,不要同時對一個表執行操作。
ODPS-0110061:Failed to run ddltask - SimpleLock conflict failure, add partition is already on-going
- 模組:META。
- 嚴重等級:1。
- 觸發條件:當大量新增同一分區時,會出現此錯誤。MaxCompute僅會執行接收到的第一個添加分區命令,並忽略後續請求。
- 處理方法:避免同時對同一分區執行操作。
ODPS-0110061: Failed to run ddltask - Your project is not allowed to install the package
- 模組:META。
- 嚴重等級:1。
- 觸發條件:使用資料動態脫敏時,直接執行
install package aegis.aegis_package;
命令,未將待脫敏的MaxCompute專案添加至脫敏project中,會出現此錯誤。 - 處理方法:執行
install package aegis.aegis_package;
命令前,請先將待脫敏的MaxCompute專案添加至脫敏project中,詳情請參見開啟資料脫敏功能。
ODPS-0110999: Critical! Internal error happened in commit operation and rollback failed, possible breach of atomicity - Rename directory failed during DDLTask.
- 模組:META。
- 嚴重等級:1。
- 觸發條件:MaxCompute沒有並發控制,可能有多個任務在修改這張表。這種情況下,有極小的機率在最後的META操作時,發生並發衝突導致執行異常。同時ALTER、INSERT操作都會發生此情況。
- 處理方法:建議您將此表修改為分區表,每個SQL語句插入的資料寫入單獨的分區裡,這樣便可以執行並行作業。
ODPS-0120011:Authorization exception
- 模組:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:許可權不足。
- 處理方法:請根據提示資訊,聯絡專案所有者授予對應操作許可權。更多許可權資訊,請參見MaxCompute許可權。
ODPS-0120021:the delimitor must be the same in wm_concat
- 模組:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:同一組中分隔字元必須相同。
- 處理方法:統一分隔字元格式,確保一致。
ODPS-0120031:Instance has been cancelled
- 模組:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:執行個體已經被取消。
- 處理方法:您可以通過MaxCompute用戶端執行
status <instance_id>;
命令確認執行個體狀態。
ODPS-0121011:Invalid regular expression pattern
- 模組:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:內建函數中的正則處理函數接收到了不能識別的Regex。
- 處理方法:修改為可識別的Regex。更多Regex資訊,請參見RLIKE字元匹配。
ODPS-0121021:Regexec call failed
- 模組:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:正則匹配時引起的錯誤。
- 處理方法:確認Regex的規範性。更多Regex資訊,請參見RLIKE字元匹配。
ODPS-0121035:Illegal implicit type cast
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:類型轉換錯誤。通常為不支援的隱式類型轉換錯誤,由於違背隱式轉換規則引起的問題。
- 處理方法:更多隱式類型轉換資訊,請參見隱式類型轉換及其範圍。
ODPS-0121045:Unsupported return type
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:不支援的傳回值。
- 處理方法:修改為支援的傳回值。
ODPS-0121055:Empty argument value
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:參數為空白或NULL。
- 處理方法:修改入參。
ODPS-0121065:Argument value out of range
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:參數值錯誤,超出允許範圍。
- 處理方法:修改參數值。
ODPS-0121075:Invalid number of arguments
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:參數個數不合法。
- 處理方法:修改參數數量。
ODPS-0121081:Illegal argument type
- 模組:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:參數基本類型錯誤。
- 處理方法:修改參數類型。
ODPS-0121095:Invalid arguments
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:輸入參數錯誤。
- 處理方法:修改輸入參數。
ODPS-0121105:Constant argument value expected
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:需要輸入常量,但輸入列名。
- 處理方法:修改輸入為常量。
ODPS-0121115:Column reference expected
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:需要輸入列名,但輸入常數。
- 處理方法:修改輸入為列名。
ODPS-0121125:Unsupported function or operation
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:不支援的UDF或其他動作。
- 處理方法:修改UDF或更換操作。
ODPS-0121145:Data overflow
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:資料溢出,超出資料類型的範圍範圍。通常情況下有可能是彙總函式。例如,求和函數導致的資料溢出。
- 處理方法:修改導致資料溢出的操作。
ODPS-0123049: buffer overflow
- 模組:PROCESSOR。
- 嚴重等級:9。
- 觸發條件:記憶體溢出。
- 處理方法:檢查資料是否有問題。例如Join操作中相同Key的資料太多。
ODPS-0123055:Script exception
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:指令碼異常。
- 處理方法:當遇到UDF報錯時,請參考UDF常見問題中的類或依賴問題行排查處理。
ODPS-0123065:Join exception
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:JOIN操作異常。
- 處理方法:修改JOIN操作。
ODPS-0123081:Invalid datetime string
- 模組:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:DATETIME字串異常。
- 處理方法:修改DATETIME字串。
ODPS-0123091:Illegal type cast
- 模組:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:非法類型轉換。通常情況下,是由於非法的顯示類型轉換造成的。
- 處理方法:修改類型轉換機制。更多資料類型轉換資訊,請參見資料類型轉換。
ODPS-0123105:Job got killed
- 模組:PROCESSOR。
- 嚴重等級:5。
- 觸發條件:作業被中止。
- 處理方法:您可以通過MaxCompute用戶端執行
status <instance_id>;
命令確認執行個體狀態。
ODPS-0123111:Format string does not match datetime string
- 模組:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:格式串不匹配日期文字。您在SQL中手動輸入的日期格式不符合MaxCompute的格式要求,或者對DATETIME相關內建函數使用不當。
- 處理方法:修改日期格式。
ODPS-0123121:Mapjoin exception
- 模組:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:MAPJOIN異常。通常情況是MAPJOIN的小表超過512 MB的系統限制造成的。
- 處理方法:修改MAPJOIN操作。
ODPS-0123131:User defined function exception
- 模組:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:自訂函數異常。
- 處理方法:修改自訂函數。
ODPS-0130013:Authorization exception
- 模組:PARSER。
- 嚴重等級:3。
- 觸發條件:許可權不足, 安全檢查不通過。
- 處理方法:請根據提示資訊,聯絡專案所有者授予對應操作許可權。更多許可權資訊,請參見MaxCompute許可權。
ODPS-0130031:Failed to drop table
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:刪除表時發現源表不存在。
- 處理方法:您可以通過MaxCompute用戶端執行
show tables;
命令確認源表名稱正確性及存在性。
ODPS-0130071:Semantic analysis exception - Invalid table alias or column reference
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:文法解析異常,列名錯誤,沒有找到對應的列。
- 處理方法:您可以通過MaxCompute用戶端執行
desc <table_name>;
擷取正確的列名稱。
ODPS-0130071:Semantic analysis exception - Invalid column reference
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:文法解析異常,列引用錯誤,沒有找到對應的列。
- 處理方法:您可以通過MaxCompute用戶端執行
desc <table_name>;
擷取正確的列名稱。
ODPS-0130071:Semantic analysis exception - Expression not in GROUP BY key
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:文法解析異常。在SELECT子句中,讀取的列與GROUP BY的列不完全一致。
- 處理方法:修改SELECT語句確保滿足文法要求。更多GROUP BY資訊,請參見GROUP BY分組查詢(col_list)。
ODPS-0130071:Semantic analysis exception - Partition not found
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:文法解析異常。沒有找到所指定分區值的分區。
- 處理方法:您可以通過MaxCompute用戶端執行
show partitions <table_name>;
命令查詢已存在的分區值,修改語句中的分區為已存在的分區。
ODPS-0130071:Semantic analysis exception - SELECT DISTINCT and GROUP BY can not be in the same query
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:DISTINCT和GROUP BY不能出現在同一個SELECT子句中。
- 處理方法:修改語句,不要同時使用DISTINCT和GROUP BY。
ODPS-0130071:Semantic analysis exception - Cannot insert into target table because column number/types are different
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:向目標表插入資料時,源表和目標表的列數量或類型不符。
- 處理方法:修改語句,確保源表和目標表的列數量或類型相匹配。
ODPS-0130071:Semantic analysis exception - physical plan generation failed: java.lang.RuntimeException: Table(xxxx) is full scan with all partitions, please specify partition predicates
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:表所屬專案禁止了分區表全表掃描,需要指定分區條件。
- 處理方法:如果當前SQL需要進行全表掃描,可以在SQL語句前加set odps.sql.allow.fullscan=true; 語句並一起提交運行。全表掃描會導致輸入量增加從而使成本增加。
ODPS-0130071:Semantic analysis exception - physical plan generation failed: com.aliyun.odps.lot.cbo.FailFastException: instance count exceeds limit 99999
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:單個作業中的
instance
超過最高限制:100000。 - 處理方法:調整
split size
降低並發量,可以在SQL語句前加set odps.sql.mapper.split.size=4096;
語句並一起提交運行。調整每個Mapper讀取表資料的大小,單位預設是MB。您可以通過控制這個變數,從而達到對Map端輸入的控制。
ODPS-0130071:Semantic analysis exception - X type is not enabled in current mode
- 問題現象:調用內建函數時,詳細報錯資訊樣本如下。
FAILED: ODPS-0130071:[1,27] Semantic analysis exception - TIMESTAMP type is not enabled in current mode. Please set odps.sql.type.system.odps2=true to use it.
- 產生原因:SQL語句中使用的內建函數涉及2.0資料類型(TINYINT、SMALLINT、INT、FLOAT、VARCHAR、TIMESTAMP或BINARY),但專案未開啟2.0資料類型開關,導致MaxCompute處理失敗。
- 解決措施:您可以在MaxCompute用戶端,通過如下方式之一,開啟2.0資料類型開關:
ODPS-0130071:Semantic analysis exception - wrong columns count X in data source, requires Y columns (includes dynamic partitions if any)
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:建立外部表格時,外部表格的列數與所映射的源表的列數不一致,導致外部表格建立失敗。
- 處理方法:檢查建立外部表格語句,確保外部表格列數與所映射的源表的列數一致。更多建立外部表格文法資訊,請參見外部表格。
ODPS-0130071:Semantic analysis exception - column X in source has incompatible type A with destination column Y, which has type B
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:外部表格某列的資料類型與所映射的源表的列資料類型不一致,導致外部表格建立失敗。
- 處理方法:檢查建立外部表格語句,確保外部表格各列的資料類型與所映射的源表的列資料類型一致。更多建立外部表格文法資訊,請參見外部表格。
ODPS-0130071:Semantic analysis exception - max depth of expression is xxxx, which exceeds limit of 5000
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:運算運算式過於複雜,導致通過該運算式構造的樹的節點數超過了限制5000。
- 處理方法:建議最佳化運算運算式。
ODPS-0130071:Semantic analysis exception - function or view Y cannot be resolved
- 問題現象:調用內建函數時,詳細報錯資訊樣本如下。
FAILED: ODPS-0130071:[1,8] Semantic analysis exception - function or view 'row_number' cannot be resolved
- 產生原因:SQL語句中使用的內建函數名稱有誤或者未攜帶參數,導致MaxCompute處理失敗。
- 解決措施:檢查函數名稱和參數名稱,並根據函數文法要求添加輸入參數,確保名稱及文法格式全部正確後,重新執行SQL語句即可。
ODPS-0130081:Invalid UDF reference
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:UDF方法簽名不合法。
- 處理方法:修改UDF代碼中的簽名資訊。
ODPS-0130091:Invalid parameters
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:UDF入參不合法。
- 處理方法:修改UDF入參,確保滿足UDF入參要求。
ODPS-0130101:Ambiguous data type
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:資料類型不合法。
- 處理方法:修改資料類型。
ODPS-0130111: Fuxi job failed - Data Set should contains exactly one row
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:讀取的資料集不滿足要求,只能包含一行記錄。
- 處理方法:修改資料集,確保僅包含一行記錄。
ODPS-0130111:Subquery partition pruning exception
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:IN條件判斷語句中的子查詢動態分區最佳化異常。
- 處理方法:修改IN條件判斷語句。
ODPS-0130121:Invalid argument type
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:非法參數類型。一般情況下,是內建函數接收到的參數類型不正確。
- 處理方法:修改參數類型。
ODPS-0130121:Invalid argument type- invalid type X of argument m for function Y
- 問題現象:調用內建函數時,詳細報錯資訊樣本如下。
FAILED: ODPS-0130121:[1,18] Invalid argument type - invalid type STRING of argument 1 for function all_match, expect ARRAY<T>
- 產生原因:SQL語句中使用的內建函數的實際輸入參數類型不滿足函數文法要求,導致MaxCompute處理失敗。
- 解決措施:根據函數文法要求修改輸入參數,確保資料類型滿足函數文法要求後,重新執行SQL語句即可。
ODPS-0130131:Table not found
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:表不存在。在操作DDL或DML語句時,被操作的表並不存在。
- 處理方法:您可以通過MaxCompute用戶端執行
show tables;
命令確認表名稱。
ODPS-0130141:Illegal implicit type cast
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:不允許的隱式類型轉換。
- 處理方法:更多隱式轉換資訊,請參見隱式類型轉換及其範圍。
ODPS-0130151:Illegal data type
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:無效的資料類型。
- 處理方法:修改資料類型。
ODPS-0130171:Creating view exception
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:建立視圖異常。
- 處理方法:檢查建立視圖語句並修改。更多建立視圖文法資訊,請參見建立或更新視圖。
ODPS-0130181:Window function exception
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:視窗函數異常。
- 處理方法:檢查視窗函數是否滿足文法要求。
ODPS-0130191:Invalid column or partition key
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:非法的列或分區鍵。
- 處理方法:您可以通過MaxCompute用戶端執行
desc <table_name>;
或show partitions <table_name>;
命令確認列或分區合法性。
ODPS-0130201:View not found
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:視圖不存在。
- 處理方法:您可以通過MaxCompute用戶端執行
show tables;
命令檢查視圖名稱正確性。
ODPS-0130211:Table or view already exists
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:表或視圖已存在。
- 處理方法:修改待建立的表或視圖的名稱。
ODPS-0130221:Invalid number of arguments
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:參數個數不合法。
- 處理方法:修改入參個數。
ODPS-0130221:Invalid number of arguments - function Y needs m parameters, actually have n
- 問題現象:調用內建函數時,詳細報錯資訊樣本如下。
FAILED: ODPS-0130221:[1,8] Invalid number of arguments - function from_utc_timestamp needs 2 parameters, actually have 1
- 產生原因:SQL語句中使用的內建函數的實際輸入參數個數不滿足函數文法要求,導致MaxCompute處理失敗。
- 解決措施:檢查內建函數的輸入參數數量,補足或減少參數,確保滿足函數文法要求後,重新執行SQL語句即可。
ODPS-0130231:Invalid view
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:視圖無效。
- 處理方法:您可以通過MaxCompute用戶端執行
show tables;
命令檢查視圖名稱正確性。
ODPS-0130241:Illegal union operation
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:無效的UNION操作。通常情況下是UNION兩邊列的數量及類型不一致造成的。
- 處理方法:修改UNION語句,滿足UNION文法要求。更多UNION資訊,請參見並集。
ODPS-0130252:Cartesian product is not allowed
- 模組:PARSER。
- 嚴重等級:2。
- 觸發條件:不支援笛卡爾積。
- 處理方法:MaxCompute在JOIN操作的關聯條件中不支援不等值運算式。
ODPS-0130261:Invalid schema
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:非法的Schema。
- 處理方法:修改Schema。
ODPS-0130271:Partition does not exist
- 模組:PARSER。
- 嚴重等級:1。
- 觸發條件:分區不存在。
- 處理方法:您可以通過MaxCompute用戶端執行
show partitions <table_name>;
命令查詢已存在的分區值,修改語句中的分區為已存在的分區。
ODPS-0140011:Illegal type cast
- 模組:PLANNER。
- 嚴重等級:1。
- 觸發條件:不允許的顯式類型轉換。
- 處理方法:修改類型轉換機制。更多顯示類型轉換資訊,請參見顯式類型轉換。
ODPS-0140021:Illegal implicit type cast
- 模組:PLANNER。
- 嚴重等級:1。
- 觸發條件:不允許的隱式類型轉換。
- 處理方法:修改類型轉換機制。更多隱式類型轉換資訊,請參見隱式類型轉換及其範圍。
ODPS-0140031:Invalid column reference
- 模組:PLANNER。
- 嚴重等級:1。
- 觸發條件:無效的列名。
- 處理方法:您可以通過MaxCompute用戶端執行
desc <table_name>;
擷取正確的列名稱。
ODPS-0140041:Invalid UDF reference
- 模組:PLANNER。
- 嚴重等級:1。
- 觸發條件:使用的UDF不存在。
- 處理方法:您可以通過MaxCompute用戶端執行
list functions;
命令查看正確的UDF名稱。
ODPS-0140051:Invalid function
- 模組:PLANNER。
- 嚴重等級:1。
- 觸發條件:非法函數。
- 處理方法:您可以通過MaxCompute用戶端執行
show functions;
或list functions;
命令查看正確的函數名稱。
ODPS-0140061:Invalid parameters
- 模組:PLANNER。
- 嚴重等級:1。
- 觸發條件:輸入參數異常。
- 處理方法:修改入參。
ODPS-0140071:Unsupported operator
- 模組:PLANNER。
- 嚴重等級:1。
- 觸發條件:不支援的運算子。
- 處理方法:修改運算子為支援的運算子。更多運算子資訊,請參見運算子。
ODPS-0140081:Unsupported join type
- 模組:PLANNER。
- 嚴重等級:1。
- 觸發條件:小表 (Left)Outer Join大表或者大表(Right) Outer Join小表。
- 處理方法:修改串連順序。
ODPS-0140105:Invalid multiple I/O
- 模組:PLANNER。
- 嚴重等級:5。
- 觸發條件:多路輸出衝突。
- 處理方法:調整作業,避免多路輸出衝突。
ODPS-0140111:Unsupported col type in EXTRACT now
- 模組:PLANNER。
- 嚴重等級:1。
- 觸發條件:EXTRACT不支援的列類型。
- 處理方法:修改為支援的列類型。
ODPS-0140133:Invalid structure
- 模組:PLANNER。
- 嚴重等級:3。
- 觸發條件:無法識別資料結構。
- 處理方法:確認資料結構的規範性。
ODPS-0140151:Can not do topologic sort, the stages is not a DAG
- 模組:PLANNER。
- 嚴重等級:1。
- 觸發條件:排序演算法出現錯誤。
- 處理方法:檢查排序演算法正確性。
ODPS-0140178: Internal system failure
- 模組:PLANNER。
- 嚴重等級:8。
- 觸發條件:系統異常。
- 處理方法:重試。
ODPS-1800001: Session exception - Failed to submit sub-query in session because:Prepaid project run out of free query quota
- 模組:不涉及。
- 嚴重等級:不涉及。
- 觸發條件:使用JDBC串連MaxCompute運行訂用帳戶資源的任務,並使用MCQA功能,作業數超過500個時,會報錯。
- 處理方法:修改JDBC啟用MCQA功能的配置,設定alwaysFallback參數值為true。詳情參見常見問題。