本文檔列出了PolarDB-X返回的常見錯誤碼及解決方案。
PXC-1305 ERR_UNKNOWN_SAVEPOINT
PXC-1094 ERR_UNKNOWN_THREAD_ID
PXC-4007 ERR_CANNOT_FETCH_TABLE_META
PXC-4018 ERR_INVALID_DDL_PARAMS
PXC-4100 ERR_ATOM_NOT_AVALILABLE
PXC-4101 ERR_ATOM_GET_CONNECTION_FAILED_UNKNOWN_REASON
PXC-4102 ERR_ATOM_GET_CONNECTION_FAILED_KNOWN_REASON
PXC-4103 ERR_ATOM_CONNECTION_POOL_FULL
PXC-4104 ERR_ATOM_CREATE_CONNECTION_TOO_SLOW
PXC-4105 ERR_ATOM_ACCESS_DENIED
PXC-4108 ERR_VARIABLE_CAN_NOT_SET_TO_NULL_FOR_NOW
PXC-4200 ERR_GROUP_NOT_AVALILABLE
PXC-4201 ERR_GROUP_NO_ATOM_AVALILABLE
PXC-4202 ERR_SQL_QUERY_TIMEOUT
PXC-4203 ERR_SQL_QUERY_MERGE_TIMEOUT
PXC-4403 ERR_MISS_SEQUENCE_TABLE_ON_DEFAULT_DB
PXC-4404 ERR_SEQUENCE_TABLE_META
PXC-4405 ERR_INIT_SEQUENCE_FROM_DB
PXC-4407 ERR_OTHER_WHEN_BUILD_SEQUENCE
PXC-4408 ERR_SEQUENCE_NEXT_VALUE
PXC-4502 ERR_OPTIMIZER_MISS_ORDER_FUNCTION_IN_SELECT
PXC-4504 ERR_OPTIMIZER_SELF_CROSS_JOIN
PXC-4506 ERR_MODIFY_SHARD_COLUMN
PXC-4508 ERR_OPTIMIZER_NOT_ALLOWED_SORT_MERGE_JOIN
PXC-4509 ERR_OPTIMIZER_ERROR_HINT
PXC-4510 ERR_CONTAINS_NO_SHARDING_KEY
PXC-4511 ERR_INSERT_CONTAINS_NO_SHARDING_KEY
PXC-4515 ERR_CONNECTION_CHARSET_NOT_MATCH
PXC-4517 ERR_MODIFY_SYSTEM_TABLE
PXC-4520 ERR_DML_WITH_SUBQUERY
PXC-4523 ERR_TODNF_LIMIT_EXCEED
PXC-4524 ERR_TOCNF_LIMIT_EXCEED
PXC-4526 ERR_FUNCTION_NOT_FOUND
PXC-4527 ERR_MODIFY_SHARD_COLUMN_ON_TABLE_WITHOUT_PK
PXC-4603 ERR_ACCROSS_DB_TRANSACTION
PXC-4604 ERR_CONCURRENT_TRANSACTION
PXC-4610 ERR_CONNECTION_CLOSED
PXC-4620 ERR_FORBID_EXECUTE_DML_ALL
PXC-4633 ERR_DB_STATUS_READ_ONLY
PXC-4709 ERR_IVENTORY_HINT_NOT_SUPPORT_CROSS_SHARD
PXC-5002 ERR_TRANS_UNSUPPORTED
PXC-5010 ERR_TRANS_CONTINUE_AFTER_WRITE_FAIL
PXC-5108 ERR_CHECK_PRIVILEGE_FAILED_ON_TABLE
PXC-5119 ERR_FILE_CANNOT_BE_CREATE
PXC-5302 ERR_GLOBAL_SECONDARY_INDEX_UNSUPPORTED
PXC-5306 ERR_GLOBAL_SECONDARY_INDEX_INSERT_DUPLICATE_VALUES
PXC-5308 ERR_GLOBAL_SECONDARY_INDEX_MODIFY_UNIQUE_KEY
PXC-5310 ERR_GLOBAL_SECONDARY_INDEX_ONLY_SUPPORT_XA
PXC-5313 ERR_GLOBAL_SECONDARY_INDEX_MODIFY_GSI_TABLE_WITH_DDL
PXC-5316 ERR_GLOBAL_SECONDARY_INDEX_INDEX_AND_SHARDING_COLUMNS_NOT_MATCH
PXC-5317 ERR_GLOBAL_SECONDARY_INDEX_CONTINUE_AFTER_WRITE_FAIL
PXC-5321 ERR_GLOBAL_SECONDARY_INDEX_BACKFILL_DUPLICATE_ENTRY
PXC-8011 ERR_OUT_OF_SPILL_SPACE
PXC-8103 ERR_NO_NODES_AVAILABLE
PXC-9301 ERR_DUPLICATED_PARTITION_NAME
PXC-9305 ERR_PARTITION_NAME_NOT_EXISTS
PXC-10004 ERR_X_PROTOCOL_RESULT
PXC-1305 ERR_UNKNOWN_SAVEPOINT
描述:指定名稱的SAVEPOINT不存在。
樣本:
ERR-CODE: [PXC-1305][ERR_UNKNOWN_SAVEPOINT] SAVEPOINT ***** does not exist
說明:在PolarDB-X上執行
ROLLBACK TO SAVEPOINT
或者RELEASE SAVEPOINT
命令時,如果指定的SAVEPOINT名稱不存在,會提示PXC-1305錯誤。建議檢查SAVEPOINT命令返回的名稱是否和使用的名稱一致。
PXC-1094 ERR_UNKNOWN_THREAD_ID
描述:KILL命令指定的會話ID不存在。
樣本:
ERR-CODE: [PXC-1094][ERR_UNKNOWN_THREAD_ID] Unknown thread id: *****
說明:在PolarDB-X上執行
KILL
命令取消執行的SQL語句時,如果指定的會話ID不存在,或者對應的SQL語句已經結束執行,會提示PXC-1094錯誤。建議使用
SHOW PROCESSLIST
命令查看正在執行的SQL語句會話ID,並只針對返回的ID執行KILL
命令。
PXC-4006 ERR_TABLE_NOT_EXIST
描述:PolarDB-X資料表不存在。
樣本:
ERR-CODE: [PXC-4006][ERR_TABLE_NOT_EXIST] Table '*****' doesn't exist.
說明:該錯誤碼錶示PolarDB-X資料表不存在,或者由於未知原因,PolarDB-X無法載入資料表的中繼資料資訊。
PXC-4007 ERR_CANNOT_FETCH_TABLE_META
描述:PolarDB-X無法載入資料表的中繼資料資訊。
樣本:
ERR-CODE: [PXC-4007][ERR_CANNOT_FETCH_TABLE_META] Table '*****' metadata cannot be fetched because Table '*****.*****' doesn't exist.
說明:該錯誤碼錶示PolarDB-X嘗試讀取資料表的中繼資料資訊失敗。可能的錯誤原因如下:
資料表未建立。
維護的中繼資料庫資訊不一致。
表被刪除或者改名。
出現該錯誤時,首先檢查表名是否存在,或者執行
check table
命令確認PolarDB-X維護的中繼資料庫資訊是否一致。如果確定表被人為刪除或改名,可以通過PolarDB-X提供的資料恢複功能修複。如果仍無法修複,請聯絡支援人員。
PXC-4018 ERR_INVALID_DDL_PARAMS
描述:PolarDB-X執行DDL過程失敗。
樣本:
ERR-CODE: [PXC-4018][ERR_INVALID_DDL_PARAMS] invalid '*****'.
說明:該錯誤表示使用者執行DDL的參數有錯誤,請檢查參數正確性。如果確認參數正確,請聯絡支援人員。
PXC-4100 ERR_ATOM_NOT_AVALILABLE
描述:PolarDB-X後端資料節點暫時不可用。
樣本:
ERR-CODE: [PXC-4100][ERR_ATOM_NOT_AVALILABLE] Atom : ***** isNotAvailable
說明:如果PolarDB-X探測到後端某個資料節點狀態異常,會臨時阻止訪問該執行個體並提示PXC-4100錯誤。
當遇到該錯誤,請檢查PolarDB-X後端所有資料節點是否異常。當後端資料節點從異常狀態恢複後,PolarDB-X將自動解除不可用狀態,恢複應用正常訪問。
PXC-4101 ERR_ATOM_GET_CONNECTION_FAILED_UNKNOWN_REASON
描述:PolarDB-X計算節點和資料節點串連擷取失敗。
樣本:
ERR-CODE: [PXC-4101][ERR_ATOM_GET_CONNECTION_FAILED_UNKNOWN_REASON] Get connection for db '*****' from pool failed. AppName:*****, Env:*****, UnitName:null. Message from pool: wait millis 5000, active 0, maxActive 5. You should look for the following logs which contains the real reason.
說明:PolarDB-X在處理請求時會向資料節點非同步建立串連。如果無法在等待時間內完成資料節點串連建立,而非同步任務又尚未返回錯誤原因,PolarDB-X會嚮應用返回PXC-4101錯誤。
該錯誤通常是由後端資料節點異常導致的。如果排除資料節點問題後仍然出現該錯誤,請聯絡支援人員。
PXC-4102 ERR_ATOM_GET_CONNECTION_FAILED_KNOWN_REASON
描述:已知原因的PolarDB-X後端串連擷取失敗。
樣本:
ERR-CODE: [PXC-4102][ERR_ATOM_GET_CONNECTION_FAILED_KNOWN_REASON] Get connection for db '*****' failed because wait millis 5000, active 0, maxActive 5
說明:PolarDB-X計算節點擷取資料節點串連時出錯,錯誤原因已經在ERR-CODE訊息中給出。常見PolarDB-X資料節點串連失敗的原因如下:
後端資料節點串連數已滿
計算節點到資料節點的連線逾時
資料節點拒絕串連
如果排除後端資料節點問題後仍然出現該錯誤,請聯絡支援人員。
PXC-4103 ERR_ATOM_CONNECTION_POOL_FULL
描述:PolarDB-X後端資料節點串連池已滿。
樣本:
ERR-CODE: [PXC-4103][ERR_ATOM_CONNECTION_POOL_FULL] Pool of DB '*****' is full. Message from pool: wait millis 5000, active 5, maxActive 5. AppName:*****, Env:*****, UnitName:null.
說明:該錯誤表示PolarDB-X後端串連池已滿。導致PXC-4103錯誤的常見原因如下:
應用SQL語句執行比較慢,佔用單個串連的時間過長,導致串連數不夠;
應用端沒有關閉資料庫連接,導致串連泄露;
有很多跨庫查詢(例如彙總統計類查詢,未帶分庫條件的查詢)同時執行,佔用大量串連。
解決方案建議如下:
盡量使用架構訪問資料庫,如Spring JDBC、MyBatis等;
按效能分析報告與DBA建議最佳化業務SQL語句;
使用PolarDB-X讀寫分離將跨庫查詢轉寄至讀庫處理;
升級更高規格的PolarDB-X,提升後端處理能力;
聯絡支援人員調整PolarDB-X後端串連數。
PXC-4104 ERR_ATOM_CREATE_CONNECTION_TOO_SLOW
描述:PolarDB-X後端資料節點串連建立太慢。
樣本:
ERR-CODE: [PXC-4104][ERR_ATOM_CREATE_CONNECTION_TOO_SLOW] Get connection for db '*****' from pool timeout. AppName:*****, Env:*****, UnitName:null. Message from pool: wait millis 5000, active 3, maxActive 5.
說明:PolarDB-X向後端資料節點非同步建立串連時,如果在短時間建立大量串連,或者資料節點建立連線速度太慢,會出現等待逾時。該問題通常是由於後端資料節點壓力過大或異常導致的,建議使用PolarDB-X讀寫分離,或者升級更高規格,減輕後端處理壓力。
如果排除後端資料節點問題後仍然出現該錯誤,請聯絡支援人員。如果問題是由短時間建立大量串連導致,建議聯絡支援人員調整PolarDB-X最小串連數。
PXC-4105 ERR_ATOM_ACCESS_DENIED
描述:PolarDB-X後端資料節點拒絕建立串連。
樣本:
ERR-CODE: [PXC-4105][ERR_ATOM_ACCESS_DENIED] DB '*****' Access denied for user '*****'@'*****'. AppName:*****, Env:*****, UnitName:null. Please contact DBA to check.
說明:該錯誤表明PolarDB-X通過使用者名稱和密碼串連資料節點時被拒絕訪問,請聯絡支援人員。
PXC-4106 ERR_ATOM_DB_DOWN
描述:PolarDB-X後端資料節點無法串連。
樣本:
ERR-CODE: [PXC-4106][ERR_ATOM_DB_DOWN] DB '*****' cannot be connected. AppName:*****, Env:*****, UnitName:null. It seems a very real possibility that this DB IS DOWN. Please contact DBA to check.
說明:該錯誤表明PolarDB-X向後端資料節點建立連線逾時或者沒有響應。遇到該錯誤的通常原因是資料節點故障,請聯絡支援人員。
PXC-4108 ERR_VARIABLE_CAN_NOT_SET_TO_NULL_FOR_NOW
描述:變數(variable)不允許被設定為NULL。
樣本:
ERR-CODE: [PXC-4108][ERR_VARIABLE_CAN_NOT_SET_TO_NULL_FOR_NOW] System variable ***** can''t set to null for now;
說明:有些資料節點變數(variable)不允許用
SET var = x
語句設定成NULL值。遇到這種情況,PolarDB-X會提示PXC-4108錯誤。
PXC-4200 ERR_GROUP_NOT_AVALILABLE
描述:PolarDB-X下的某個資料節點暫時不可用。
樣本:
ERR-CODE: [PXC-4200][ERR_GROUP_NOT_AVALILABLE] The TDDL Group ***** is running in fail-fast status, caused by this SQL:***** which threw a fatal exception as *****.
說明:當分庫包含的資料節點出現訪問異常,並且分庫下沒有其他可用資料節點時,PolarDB-X會將分庫置於fail-fast狀態並提示PXC-4200錯誤。
通常該錯誤是由於資料節點故障導致的。請根據包含的資料節點異常資訊定位和解決問題。當故障資料節點恢複後,PolarDB-X將自動取消fail-fast狀態。
如果資料節點故障解決後仍然出現PXC-4200錯誤,請聯絡支援人員。
PXC-4201 ERR_GROUP_NO_ATOM_AVALILABLE
描述:PolarDB-X分庫內暫時沒有可用資料節點。
樣本:
ERR-CODE: [PXC-4201][ERR_GROUP_NO_ATOM_AVALILABLE] All weights of DBs in Group '*****' is 0. Weights is: *****.
說明:當分庫包含的資料節點全都不可用,或者處於fail-fast狀態時,PolarDB-X會提示PXC-4201錯誤。
通常該錯誤是由於資料節點故障導致的。請檢查後端資料節點狀態以定位和解決問題。如果故障解決後仍然出現PXC-4201錯誤,請聯絡支援人員。
PXC-4202 ERR_SQL_QUERY_TIMEOUT
描述:PolarDB-X查詢逾時。
樣本:
ERR-CODE: [PXC-4202][ERR_SQL_QUERY_TIMEOUT] Slow query leads to a timeout exception, please contact DBA to check slow sql. SocketTimout:*** ms, Atom:*****, Group:*****, AppName:*****, Env:*****, UnitName:null.
說明:該錯誤表示SQL語句在後端資料節點上的執行時間超過PolarDB-X設定的socketTimeout參數限制。預設的PolarDB-X逾時(socketTimeout)時間設定是900秒。
建議最佳化SQL語句,以及在後端資料節點上建立適合的索引以提升SQL語句的執行效能。如果最佳化後的SQL語句仍然較慢,可以參見如下Hint文法臨時設定PolarDB-X的逾時時間:
/*TDDL:SOCKET_TIMEOUT=900000*/ SELECT * FROM dual;
,其中SOCKET_TIMEOUT設定的單位是毫秒。關於PolarDB-X的Hint用法,詳情請參見如何自訂SQL逾時時間。如果需要永久調整PolarDB-X逾時設定,請聯絡支援人員。
PXC-4203 ERR_SQL_QUERY_MERGE_TIMEOUT
描述:PolarDB-X分散式查詢逾時。
樣本:
ERR-CODE: [PXC-4203][ERR_SQL_QUERY_MERGE_TIMEOUT] Slow sql query leads to a timeout exception during merging results, please optimize the slow sql. The the default timeout is *** ms. DB is *****
說明:PolarDB-X執行分散式查詢逾時,預設的逾時設定是900秒。產生PXC-4203錯誤表示SQL語句掃描了多個分庫的資料並且執行時間超過900秒。
建議進行如下最佳化:
在WHERE條件中添加分庫鍵(Sharding key)條件,將SQL語句最佳化成單庫執行;
檢查是否可以在後端資料節點上建立適合的索引,提升掃描各個分庫資料的效能;
設法消除分散式查詢中的跨庫JOIN,資料重排序等耗時操作,降低PolarDB-X資料合併階段的消耗。
如果最佳化後的SQL語句仍然較慢,可以使用如下Hint文法臨時設定PolarDB-X的逾時時間:
/*TDDL:SOCKET_TIMEOUT=900000*/ SELECT * FROM dual;
,其中SOCKET_TIMEOUT設定的單位是毫秒。關於PolarDB-X的Hint用法,詳情請參見如何自訂SQL逾時時間。
PXC-4400 ERR_SEQUENCE
描述:處理Sequence(全域唯一序列)失敗。
樣本:
ERR-CODE: [PXC-4400][ERR_SEQUENCE] Sequence : All dataSource faild to get value!
說明:處理Sequence出錯,錯誤資訊在
Sequence :
中給出。導致PXC-4400的常見原因是資料節點故障,無法訪問Sequence有關的資料表。建議先檢查後端資料節點狀態。如果排除資料節點故障後仍然發生錯誤,請聯絡支援人員。
PXC-4401 ERR_MISS_SEQUENCE
描述:Sequence不存在。
樣本:
ERR-CODE: [PXC-4401][ERR_MISS_SEQUENCE] Sequence '*****' is not found
說明:命令中使用的Sequence名稱不存在。建議用
SHOW SEQUENCES
命令檢查PolarDB-X中所有已建立的Sequence名稱,並且選擇正確的Sequence使用。如果使用的Sequence尚不存在,可以用如下語句建立:
CREATE SEQUENCE <sequence name> [ START WITH <numeric value> ] [ INCREMENT BY <numeric value> ] [ MAXVALUE <numeric value> ] [ CYCLE | NOCYCLE ]`
如果使用的Sequence已經存在,但是仍然提示PXC-4401錯誤,請聯絡支援人員。關於PolarDB-X的Sequence用法,詳情請參見概述。
PXC-4403 ERR_MISS_SEQUENCE_TABLE_ON_DEFAULT_DB
描述:Sequence使用的資料表不存在。
樣本:
ERR-CODE: [PXC-4403][ERR_MISS_SEQUENCE_TABLE_ON_DEFAULT_DB] Sequence table is not in default db.
說明:無法在PolarDB-X後端的資料庫裡訪問名稱叫sequence或者sequence_opt的資料表,請聯絡支援人員。
PXC-4404 ERR_SEQUENCE_TABLE_META
描述:Sequence資料表結構錯誤。
樣本:
ERR-CODE: [PXC-4404][ERR_SEQUENCE_TABLE_META] the meta of sequence table is error, some columns missed
說明:Sequence相關資料表(如sequence或sequence_opt)中缺少相應的欄位,請聯絡支援人員。
PXC-4405 ERR_INIT_SEQUENCE_FROM_DB
描述:初始化Sequence錯誤。
樣本:
ERR-CODE: [PXC-4405][ERR_INIT_SEQUENCE_FROM_DB] init sequence manager error: *****
說明:初始化需要訪問的Sequence時出錯,錯誤資訊在init sequence manager error後給出。建議先檢查PolarDB-X後端資料節點狀態。如果排除資料節點故障後仍然提示PXC-4405錯誤,請聯絡支援人員。
PXC-4407 ERR_OTHER_WHEN_BUILD_SEQUENCE
描述:訪問Sequence資料表出錯。
樣本:
ERR-CODE: [PXC-4407][ERR_OTHER_WHEN_BUILD_SEQUENCE] error when build sequence: *****
說明:在訪問Sequence相關資料表(如sequence或sequence_opt)時發生錯誤。錯誤資訊在error when build sequence後給出。
建議先檢查PolarDB-X後端資料節點狀態。如果排除資料節點故障後仍然提示PXC-4407錯誤,請聯絡支援人員。
PXC-4408 ERR_SEQUENCE_NEXT_VALUE
描述:擷取Sequence值出錯。
樣本:
ERR-CODE: [PXC-4408][ERR_SEQUENCE_NEXT_VALUE] error when get sequence's next value, sequence is: *****, error: *****
說明:使用PolarDB-X自增主鍵,或者使用
<sequence name>.NEXTVAL
文法手工擷取全域唯一ID時發生錯誤。錯誤原因在error提示後給出。產生PXC-4408錯誤的原因是後端資料節點故障。建議先檢查PolarDB-X後端資料節點狀態和訪問壓力。如果排除資料節點故障後仍然提示PXC-4408錯誤,請聯絡支援人員。
PXC-4500 ERR_PARSER
PXC-4501 ERR_OPTIMIZER
描述:最佳化器轉換SQL語句失敗。
樣本:
ERR-CODE: [PXC-4501][ERR_OPTIMIZER] optimize error by: Unknown column '*****' in 'order clause'
說明:PolarDB-X最佳化器的工作是轉換SQL語句到內部文法樹。如果SQL語句中出現邏輯錯誤,最佳化器轉換就會失敗,產生PXC-4501錯誤。
建議按照optimize error by後的提示檢查和調整您的SQL語句。如果調整SQL語句後仍然提示PXC-4501錯誤,請聯絡支援人員。
PXC-4502 ERR_OPTIMIZER_MISS_ORDER_FUNCTION_IN_SELECT
描述:ORDER BY包含的函數列在SELECT子句中不存在。
樣本:
ERR-CODE: [PXC-4502][ERR_OPTIMIZER_MISS_ORDER_FUNCTION_IN_SELECT] Syntax Error: orderBy/GroupBy Column ***** is not existed in select clause`
說明:當SQL語句中的ORDER BY子句包含函數列(例如RAND())時,PolarDB-X要求同樣的函數列必須也在SELECT子句中出現,否則提示PXC-4502錯誤。
建議在SELECT子句中添加相應的函數列。
PXC-4504 ERR_OPTIMIZER_SELF_CROSS_JOIN
描述:相同表JOIN的條件不足。
樣本:
ERR-CODE: [PXC-4504][ERR_OPTIMIZER_SELF_CROSS_JOIN] self cross join case, add shard column filter on right table
說明:PolarDB-X在執行相同表的JOIN時,如果WHERE子句只包含其中一張左表(或右表)的拆分欄位(sharding column)條件,會提示PXC-4504錯誤。
建議調整SQL語句,在WHERE子句中補全JOIN左表(或右表)的拆分欄位條件。
PXC-4506 ERR_MODIFY_SHARD_COLUMN
描述:禁止更新拆分鍵。
樣本:
ERR-CODE: [PXC-4506][ERR_MODIFY_SHARD_COLUMN] Column '*****' is a sharding key of table '*****', which is forbidden to be modified.
說明:這是禁止修改拆分鍵(sharding key)的異常,PolarDB-X目前禁止修改包含GSI的表的分區鍵。
建議將對應UPDATE語句修改為相同效果的INSERT+DELETE語句。
PXC-4508 ERR_OPTIMIZER_NOT_ALLOWED_SORT_MERGE_JOIN
描述:無法執行合并排序JOIN。
樣本:
ERR-CODE: [PXC-4508][ERR_OPTIMIZER_NOT_ALLOWED_SORT_MERGE_JOIN] sort merge join is not allowed when missing equivalent filter
說明:如果SQL語句中需要JOIN的資料表分別來自不同的資料節點,PolarDB-X會優先選擇合并排序(Sort-merge Join)演算法。該演算法要求JOIN的左表與右表必須包含欄位相等的關聯條件,否則PolarDB-X將提示PXC-4508錯誤。
建議調整SQL語句,在JOIN或WHERE部分添加相應的關聯條件。
PXC-4509 ERR_OPTIMIZER_ERROR_HINT
樣本:
ERR-CODE: [PXC-4509][ERR_OPTIMIZER_ERROR_HINT] Hint Syntax Error: unexpected operation: *****.
說明:該錯誤表示SQL語句中的Hint文法無法被PolarDB-X解析。更多關於Hint文法資訊,請參見如何使用HINT。
PXC-4510 ERR_CONTAINS_NO_SHARDING_KEY
描述:缺少拆分鍵(sharding key)條件。
樣本:
ERR-CODE: [PXC-4510][ERR_CONTAINS_NO_SHARDING_KEY] Your SQL contains NO SHARDING KEY '*****' for table '*****', which is not allowed in DEFAULT.
說明:禁止全表掃描(full-table scan)功能,PolarDB-X在建表時預設開啟全表掃描功能。如果手動關閉全表掃描,建議確認與該表有關的SQL語句都已添加拆分鍵條件。
PXC-4511 ERR_INSERT_CONTAINS_NO_SHARDING_KEY
描述:INSERT語句缺少拆分鍵 (sharding key)。
樣本:
ERR-CODE: [PXC-4511][ERR_INSERT_CONTAINS_NO_SHARDING_KEY] Your INSERT SQL contains NO SHARDING KEY '*****' for table '*****'.
說明:當INSERT語句的目標是一張PolarDB-X拆分表時,必須在插入資料中包含拆分鍵的值(拆分鍵是自增主鍵例外)。否則,PolarDB-X將提示PXC-4511錯誤。
如果遇到該錯誤,建議修改INSERT語句補充缺少的拆分索引值。
PXC-4515 ERR_CONNECTION_CHARSET_NOT_MATCH
描述:輸入的字串與資料庫的字元集不匹配。
樣本:
ERR-CODE: [PXC-4515][ERR_CONNECTION_CHARSET_NOT_MATCH] Caused by MySQL's character_set_connection doesn't match your input charset. Partition DDL can only take ASCII or chinese column name. If you want use chinese table or column name, Make sure MySQL connection's charset support chinese character. Use "set names xxx" to set correct charset.
說明:PolarDB-X支援用中文字元命名表名及欄位名。在執行含有中文字元的SQL語句時,如果資料庫連接的字元集設定(character_set_connection)不支援中文(如 latin1),會提示PXC-4515錯誤。
您可以使用
SHOW VARIABLES LIKE 'character_set_connection'
查詢MySQL用戶端當前的串連字元集,使用SET NAMES
命令修改當前串連字元集。如果是Java程式JDBC方式串連PolarDB-X,請設定資料庫連接參數characterEncoding。
PXC-4517 ERR_MODIFY_SYSTEM_TABLE
描述:禁止修改系統資料表。
樣本:
ERR-CODE: [PXC-4617][ERR_MODIFY_SYSTEM_TABLE] Table '*****' is PolarDB-XSYSTEM TABLE, which is forbidden to be modified.
說明:PolarDB-X內部維護了一些系統資料表,使用SQL語句更新其中的資料會提示PXC-4517錯誤。限制的系統資料表包括sequence、sequence_opt、txc_undo_log等,請避免在業務或資料庫設計中使用這些表名。
PXC-4520 ERR_DML_WITH_SUBQUERY
描述:不支援在DML使用子查詢語句。
樣本:
ERR-CODE: [PXC-4520][ERR_DML_WITH_SUBQUERY] DO NOT support UPDATE/DELETE with subQuery
說明:目前PolarDB-X中禁止在DML語句中包含子查詢語句,遇到此類問題建議先從業務上改寫SQL,避免使用子查詢。
PXC-4521 ERR_INSERT_SHARD
描述:Insert過程中一條記錄被路由到了多個分區。
樣本:
ERR-CODE: [PXC-4521][ERR_INSERT_SHARD] Cannot decide which group to insert
說明:Insert過程中一條記錄被路由到了多個分區,導致不知道這條記錄被插入到哪個分區,出現這類問題,請聯絡支援人員。
PXC-4523 ERR_TODNF_LIMIT_EXCEED
描述:where後面的過濾條件太多。
樣本:
ERR-CODE: [PXC-4523][ERR_TODNF_LIMIT_EXCEED] toDnf has exceed the limit size
說明:PolarDB-X會對使用者SQL的查詢條件(即where子句)進行CNF/DNF的條件範式轉換,並進行條件推導與最佳化,為了最佳化穩定性,限制了條件數2000。使用者可以將DNF_REX_NODE_LIMIT參數調整大。
PXC-4524 ERR_TOCNF_LIMIT_EXCEED
描述:where後面的過濾條件太多。
樣本:
ERR-CODE: [PXC-4524][ERR_TODNF_LIMIT_EXCEED] toCnf has exceed the limit size
說明:PolarDB-X會對使用者SQL的查詢條件(即where子句)進行CNF/DNF的條件範式轉換,並進行條件推導與最佳化,為了最佳化穩定性,限制了條件數2000。使用者可以將CNF_REX_NODE_LIMIT參數調整大。
PXC-4526 ERR_FUNCTION_NOT_FOUND
描述:該函數不支援調用。
樣本:
ERR-CODE: [PXC-4526][ERR_FUNCTION_NOT_FOUND] No match found for function signature
說明:該錯誤表明在SQL語句中使用了錯誤的文法或不支援的函數。建議仔細檢查SQL語句中的函數調用部分,使用正確的參數個數和類型調用函數。
PXC-4527 ERR_MODIFY_SHARD_COLUMN_ON_TABLE_WITHOUT_PK
描述:不允許在無主鍵的表上修改分庫鍵。
樣本:
ERR-CODE: [PXC-4527][ERR_MODIFY_SHARD_COLUMN_ON_TABLE_WITHOUT_PK]
說明:PolarDB-X目前不允許在無主鍵的表上修改分庫鍵。
PXC-4595 ERR_UNKNOWN_TZ
描述:設定錯誤的時區。
樣本:
ERR-CODE: [PXC-4595][ERR_UNKNOWN_TZ]
說明:建議檢查時間的文法和格式是否設定正確。
PXC-4600 ERR_FUNCTION
描述:錯誤的函數調用。
樣本:
ERR-CODE: [PXC-4600][ERR_FUNCTION] function compute error by Incorrect parameter count in the call to native function '*****'
說明:該錯誤表明在SQL語句中使用了錯誤的文法或參數調用函數。建議仔細檢查SQL語句中的函數調用部分,使用正確的參數個數和類型調用函數。
PXC-4602 ERR_CONVERTOR
描述:錯誤的類型轉換。
樣本:
ERR-CODE: [PXC-4602][ERR_CONVERTOR] convertor error by Unsupported convert: [*****]
說明:該錯誤表明PolarDB-X在執行SQL時進行資料類型轉換失敗。請檢查SQL語句中是否存在需要隱式類型轉換的資料,並且盡量使用相同類型進行比較和計算。
PXC-4603 ERR_ACCROSS_DB_TRANSACTION
描述:跨庫事務失敗。
樣本:
ERR-CODE: [PXC-4603][ERR_ACCROSS_DB_TRANSACTION] Transaction accross db is not supported in current transaction policy, transaction node is: {0}, but this sql execute on: *****.
說明:PolarDB-X預設支援跨庫事務,請檢查之前是否設定過其他事務策略。
PXC-4604 ERR_CONCURRENT_TRANSACTION
描述:嵌套事務失敗。
樣本:
ERR-CODE: [PXC-4604][ERR_CONCURRENT_TRANSACTION] Concurrent query is not supported on transaction group, transaction group is: {0}.
說明:PolarDB-X不支援嵌套事務,如果在同一個資料庫連接裡嘗試同時開啟2個以上事務,將提示PXC-4604錯誤。
建議在應用開發時避免使用嵌套事務,或者使用應用程式層的事務架構防止產生嵌套事務。
PXC-4606 ERR_QUERY_CANCLED
描述:當前執行的SQL被取消。
樣本:
ERR-CODE: [PXC-4606][ERR_QUERY_CANCLED] Getting connection is not allowed when query has been cancled, group is *****
說明:使用
KILL
取消某條SQL語句的執行時,被取消的SQL語句會返回該錯誤。如果經常出現這一情況,請排查是否有用戶端或程式在執行KILL命令。
PXC-4610 ERR_CONNECTION_CLOSED
描述:串連已經關閉。
樣本:
ERR-CODE: [PXC-4610][ERR_CONNECTION_CLOSED] connection has been closed
說明:當事務中的SQL語句執行出錯,或者被
KILL
命令取消後,重複使用同一個資料庫連接執行其他SQL語句會提示PXC-4610錯誤。建議在該情況下關閉串連,重新擷取一個新的資料庫連接。
PXC-4612 ERR_CHECK_SQL_PRIV
描述:由於許可權不夠,SQL語句無法執行。
樣本:
ERR-CODE: [PXC-4612][ERR_CHECK_SQL_PRIV] check user ***** on db ***** sql privileges failed.
說明:PolarDB-X的新版本支援為帳號授權,類似MySQL帳號許可權體系,只有擁有對應類型許可權的帳號才能執行該SQL語句。如果帳號許可權不足,PolarDB-X將提示PXC-4612錯誤。
建議檢查使用者擁有的PolarDB-X許可權。如果許可權不足,請在PolarDB-X控制台設定。關於PolarDB-X帳號與使用權限設定,請參見管理資料庫帳號。
PXC-4614 ERR_EXECUTE_ON_MYSQL
描述:SQL語句在DN上執行報錯。
樣本:
ERR-CODE: [PXC-4614][ERR_EXECUTE_ON_MYSQL] Error occurs when execute on GROUP '*****': Duplicate entry '*****' for key 'PRIMARY' PolarDB-X在後端資料節點資料庫上執行SQL語句報錯,末尾包含了從資料節點返回的原始錯誤資訊,例如: Duplicate entry '*****' for key 'PRIMARY' 表示寫入資料節點資料表發生了主鍵衝突。 The table '*****' is full 表示資料節點使用的暫存資料表已滿,需要調整暫存資料表空間或最佳化SQL語句。 Deadlock found when trying to get lock; 表示在資料節點中出現了死結,通常是資料寫入存在較多事務衝突導致的。
說明:建議參見PXC-4614提供的原始錯誤資訊排查問題。更多關於SQL語句錯誤資訊請參見MySQL 5.6文檔。如果排除應用或資料節點問題後仍然發生PXC-4614錯誤,請聯絡支援人員。
PXC-4616 ERR_UNKNOWN_DATABASE
描述:錯誤的資料庫。
樣本:
ERR-CODE: [PXC-4616][ERR_UNKNOWN_DATABASE] Unknown database '*****'
說明:PolarDB-X允許在DDL語句中指定資料庫名稱。如果指定的資料庫名稱與PolarDB-X提供的資料庫名稱不一致,將返回PXC-4616錯誤。
建議修改DDL語句中的資料庫名稱,確保與PolarDB-X資料庫名稱一致。
PXC-4620 ERR_FORBID_EXECUTE_DML_ALL
說明:PolarDB-X禁止不帶where條件執行delete和update操作。
PXC-4633 ERR_DB_STATUS_READ_ONLY
樣本:
ERR-CODE: [PXC-4633][ERR_DB_STATUS_READ_ONLY] Database is read-only, only read sql are supported
說明:該錯誤碼錶示資料庫只有讀許可權,請檢查下當前帳號的許可權是否受限。
PXC-4636 ERR_DDL_JOB_ERROR
DDL語句執行失敗。
樣本:
ERR-CODE: [PXC-4636][ERR_DDL_JOB_ERROR] xxxx
該錯誤碼錶示DDL語句執行失敗,處理方法請參見如何處理DDL異常。
PXC-4642 ERR_UNKNOWN_TABLE
資料庫中不存在這張表。
樣本:
ERR-CODE: [PXC-4642][ERR_UNKNOWN_TABLE] Unknown table XX.XX
請檢查當前資料庫中是否有這張表。
PXC-4707 ERR_OUT_OF_MEMORY
描述:暫存資料表使用記憶體超限。
樣本:
ERR-CODE: [PXC-4707][ERR_OUT_OF_MEMORY]
說明:為了保證資料庫穩定性,PolarDB-X限制了每條查詢的暫存資料表使用記憶體量,說明使用者當前的查詢涉及到的資料比較多,可以開啟SPILL或者調大當前查詢暫存資料表記憶體限制。
PXC-4709 ERR_IVENTORY_HINT_NOT_SUPPORT_CROSS_SHARD
樣本:
ERR-CODE: [PXC-4709][ERR_IVENTORY_HINT_NOT_SUPPORT_CROSS_SHARD]
說明:熱點秒殺功能要求是單分區事務,如果涉及到多分區事務,會出現該錯誤。請調整商務邏輯,確保在單分區事務下使用熱點功能。
PXC-4994 ERR_FLOW_CONTROL
描述:流量已達上限。
樣本:
ERR-CODE: [PXC-4994][ERR_FLOW_CONTROL] [*****] flow control by *****
說明:該錯誤代表PolarDB-X處理SQL請求已達到內部資料傳輸量上限,當前請求被拒絕。建議檢查SQL請求量是否存在異常峰值。如果觀察到SQL請求量下降後,仍然大量提示PXC-4994錯誤,請聯絡支援人員。
PXC-4998 ERR_NOT_SUPPORT
描述:不支援的特性。
樣本:
ERR-CODE: [PXC-4998][ERR_NOT_SUPPORT] ***** not support yet!
說明:該錯誤代表使用的SQL文法或者功能PolarDB-X尚不支援。如果這些SQL文法或者功能對您十分重要,請聯絡支援人員。
PXC-5001 ERR_TRANS
描述:一般性的事務錯誤。
樣本:
ERR-CODE: [PXC-5001][ERR_TRANS] Too many lines updated in statement.
說明:請參見錯誤資訊處理。
Too many lines updated in statement
事務中的UPDATE語句更新行數超出限制(1000),建議檢查UPDATE語句的WHERE條件。如果需要在事務中執行大批量資料更新,可以使用PolarDB-X
Hint/*TDDL:UNDO_LOG_LIMIT={number}*/
調整限制值。Deferred execution is only supported in Flexible or XA Transaction
後置執行功能僅僅在柔性事務與XA事務策略下可用。在用PolarDB-X的
Hint/*TDDL:DEFER*/
語句提交後置執行功能之前,請先用SET drds_transaction_policy = ***
命令更改PolarDB-X事務策略。其他錯誤資訊,請聯絡支援人員。
PXC-5002 ERR_TRANS_UNSUPPORTED
描述:事務中的文法或功能尚不支援。
樣本:
ERR-CODE: [PXC-5002][ERR_TRANS_UNSUPPORTED] Table without primary keys is not supported.
說明:該功能在PolarDB-X事務中尚不支援。如果此功能很重要,請聯絡支援人員。
PXC-5003 ERR_TRANS_LOG
描述:無法訪問交易記錄。
樣本:
ERR-CODE: [PXC-5003][ERR_TRANS_LOG] Failed to update transaction state: *****
說明:為保證分散式交易的原子性,PolarDB-X在事務中會訪問後端資料節點上的交易記錄。如果PolarDB-X在讀寫交易記錄時出錯,將返回PXC-5003錯誤。
產生PXC-5003錯誤的原因通常來自後端的資料節點故障。建議檢查PolarDB-X後端資料節點狀態和訪問壓力。如果排除資料節點問題後仍然產生PXC-5003錯誤,請聯絡支援人員。
PXC-5006 ERR_TRANS_COMMIT
描述:事務提交過程中出錯。
樣本:
ERR-CODE: [PXC-5006][ERR_TRANS_COMMIT] Failed to commit primary group *****: *****, TRANS_ID = *****
說明:PolarDB-X在提交事務分支過程中出錯,TRANS_ID對應的事務將被自動復原。產生PXC-5006錯誤的原因通常來自後端的資料節點故障。建議檢查PolarDB-X後端資料節點狀態和訪問壓力。如果排除資料節點問題後仍然產生PXC-5006錯誤,請聯絡支援人員。
PXC-5008 ERR_TRANS_TERMINATED
描述:事務已被Kill或逾時中止。
樣本:
ERR-CODE: [PXC-5008][ERR_TRANS_TERMINATED] Current transaction was killed or timeout. You may need to set a longer timeout value.
說明:如果PolarDB-X事務在執行中被Kill或者逾時(執行時間超出drds_transaction_timeout值),則出現該錯誤。如果是事務逾時導致報錯,建議使用
SET drds_transaction_timeout = ***
命令修改PolarDB-X事務的執行時間上限,單位是毫秒。
PXC-5010 ERR_TRANS_CONTINUE_AFTER_WRITE_FAIL
描述:寫入失敗後,不允許繼續進行事務操作。
樣本:
ERR-CODE: [PXC-5010][ERR_TRANS_CONTINUE_AFTER_WRITE_FAIL] Cannot continue or commit transaction after writing failed
說明:如果PolarDB-X事務中涉及到分散式交易,執行失敗後,不允許繼續進行事務,這個時候需要前端主動執行rollback,重試事務操作。
PXC-5108 ERR_CHECK_PRIVILEGE_FAILED_ON_TABLE
說明:當前帳號沒有對當前表的操作許可權,請檢查許可權。
PXC-5119 ERR_FILE_CANNOT_BE_CREATE
說明:PolarDB-X預設關閉對SELECT INTO OUTFILE
語句的支援,如有需要請聯絡支援人員。
PXC-5302 ERR_GLOBAL_SECONDARY_INDEX_UNSUPPORTED
說明:當前表不支援建立全域二級索引。可能是如下原因導致的:1. 當前表是單表或者廣播表;2. 全域二級索引的列不包含分區鍵。其他情況請聯絡支援人員。
PXC-5306 ERR_GLOBAL_SECONDARY_INDEX_INSERT_DUPLICATE_VALUES
說明:在資料寫入到全域二級索引表過程中存在主鍵衝突,請根據報錯資訊提示的記錄值,確認是否存在主鍵衝突。
PXC-5308 ERR_GLOBAL_SECONDARY_INDEX_MODIFY_UNIQUE_KEY
說明:在執行DML過程中,全域二級索引表存在唯一鍵衝突,請根據報錯資訊提示的記錄值,確認是否存在唯一鍵衝突。
PXC-5310 ERR_GLOBAL_SECONDARY_INDEX_ONLY_SUPPORT_XA
說明:PolarDB-X只有在XA/TSO分散式交易下,才支援全域二級索引,如果產生此報錯,可能業務之前調整過預設事務策略,請調整回XA/TSO分散式交易,再建立全域二級索引。
PXC-5313 ERR_GLOBAL_SECONDARY_INDEX_MODIFY_GSI_TABLE_WITH_DDL
說明:PolarDB-X預設不支援對全域二級索引表做DDL操作,如有需要請聯絡支援人員。
PXC-5316 ERR_GLOBAL_SECONDARY_INDEX_INDEX_AND_SHARDING_COLUMNS_NOT_MATCH
說明:PolarDB-X在建立全域二級索引時,要求索引欄位中必須包含全域索引的區鍵(如果全域索引有多個分區鍵,例如分庫鍵和分表鍵,則必須全部包含在索引列中),例如CREATE GLOBAL INDEX idx_1 ON t(a, b) DBPARTITION BY HASH(c)
會產生錯誤PXC-5316,原因是ON t(a, b)
子句指定了a和b為索引列,但未包含全域索引的分區鍵c。如果產生此報錯,請檢查DDL語句中索引欄位是否包含了全域索引的全部分區鍵。
PXC-5317 ERR_GLOBAL_SECONDARY_INDEX_CONTINUE_AFTER_WRITE_FAIL
樣本:
ERR-CODE: [PXC-5317][ERR_GLOBAL_SECONDARY_INDEX_CONTINUE_AFTER_WRITE_FAIL] Cannot continue or commit transaction after writing global secondary index failed
說明:在包含GSI的表上執行DML語句時,如果產生此報錯,則不允許繼續提交包含該失敗DML語句的事務。需要修改業務代碼,DML報錯後需要復原事務之後重試。
PXC-5321 ERR_GLOBAL_SECONDARY_INDEX_BACKFILL_DUPLICATE_ENTRY
說明:在建立全域二級索引過程中,資料回填出現了索引表主鍵衝突,請確認索引表的主鍵是否存在相同值。
PXC-8007 ERR_ABANDONED_TASK
說明:查詢過慢或者由於不明原因卡住超過2小時,資料庫系統會終止查詢,出現該異常。請先最佳化查詢,確保不會出現超慢查詢,若無法解決,請聯絡支援人員。
PXC-8008 ERR_EXECUTE_SPILL
說明:查詢過程中,資料過大會觸發暫存資料表落盤,這個錯誤是在資料落盤過程中出現的異常,請聯絡支援人員。
PXC-8011 ERR_OUT_OF_SPILL_SPACE
說明:查詢過程中,資料過大會觸發暫存資料表落盤,如果暫存資料表生產的檔案過多,超過了系統允許的可落盤的最大磁碟空間就會出現此錯誤。請先最佳化查詢,減少計算過程中對暫存資料表的依賴。若無法解決請聯絡支援人員。
PXC-8012 ERR_OUT_OF_SPILL_FD
說明:查詢過程中,資料過大會觸發暫存資料表落盤,如果暫存資料表生產的檔案過多,超過了系統允許的檔案控制代碼個數就會出現此錯誤。請聯絡支援人員,確保是否存在檔案控制代碼泄漏,若沒有泄漏,可以適當調大檔案控制代碼個數限制。
PXC-8102 ERR_PAGE_TOO_LARGE
說明:在MPP並計算過程中,資料是按批在多個計算節點網路互動,如果一個批的資料過大超過RPC限制最大值,就會出現此錯誤,可以嘗試調小預設CHUNK_SIZE值。
PXC-8103 ERR_NO_NODES_AVAILABLE
說明:在MPP並行計算過程中可能有計算節點出現故障,導致執行調度之初沒有計算節點可調度,請確認計算節點服務是否正常,如果計算節點服務都正常仍然出現報此類錯誤,請聯絡支援人員。
PXC-9301 ERR_DUPLICATED_PARTITION_NAME
說明:在執行分區表相關的DDL操作過程中,使用了相同的分區表名。
PXC-9305 ERR_PARTITION_NAME_NOT_EXISTS
說明:在執行分區表相關的DDL操作過程中,提示分區表名不存在。請檢查下分表名是否拼字正常,使用show create table
和 check table
檢查表中繼資料是否一致,如果不一致,可能是中繼資料維護資訊不一致導致。請聯絡支援人員。
PXC-10004 ERR_X_PROTOCOL_RESULT
樣本:
ERR-CODE: [PXC-10004][ERR_X_PROTOCOL_RESULT] Should use chunk2chunk to fetch data
說明:PolarDB-X計算節點和資料節點採用的是私人RPC通訊,出現這類異常主要是計算節點和資料節點建立的串連異常,具體原因有很多種,需要查看異常資訊,如果無法定位具體問題,請聯絡支援人員。
TDDL-4601 ERR_EXECUTOR
樣本:
ERR-CODE: [TDDL-4601][ERR_EXECUTOR] only one column is supported in distinct aggregate
說明:SQL執行過程出錯。該錯誤代表PolarDB-X在執行SQL語句過程中出現了意外錯誤。這類錯誤通常與後端RDS MySQL異常狀態有關。