本文為您介紹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中,詳情請參見步驟二:為目標MaxCompute項目開啟數據脫敏功能。
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。
- 觸發條件:內建函數中的正則處理函數接收到了不能識別的正則表達式。
- 處理方法:修改為可識別的正則表達式。更多正則表達式信息,請參見正則表達式規范。
ODPS-0121021:Regexec call failed
- 模塊:PROCESSOR。
- 嚴重等級:1。
- 觸發條件:正則匹配時引起的錯誤。
- 處理方法:確認正則表達式的規范性。更多正則表達式信息,請參見正則表達式規范。
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。詳情參見常見問題。