日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

drds 解决问题_DRDS 错误代码如何解决?-问答-阿里云开发者社区-阿里云

發布時間:2025/3/20 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 drds 解决问题_DRDS 错误代码如何解决?-问答-阿里云开发者社区-阿里云 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DRDS 錯誤代碼如何解決?

貓飯先生

2017-10-30 14:19:20

13731

本文檔列出了 DRDS 返回的常見錯誤碼及解決方法。

TDDL-4006 ERR_TABLE_NOT_EXIST

TDDL-4007 ERR_CANNOT_FETCH_TABLE_META

TDDL-4100 ERR_ATOM_NOT_AVALILABLE

TDDL-4101 ERR_ATOM_GET_CONNECTION_FAILED_UNKNOWN_REASON

TDDL-4102 ERR_ATOM_GET_CONNECTION_FAILED_KNOWN_REASON

TDDL-4103 ERR_ATOM_CONNECTION_POOL_FULL

TDDL-4104 ERR_ATOM_CREATE_CONNECTION_TOO_SLOW

TDDL-4105 ERR_ATOM_ACCESS_DENIED

TDDL-4106 ERR_ATOM_DB_DOWN

TDDL-4108 ERR_VARIABLE_CAN_NOT_SET_TO_NULL_FOR_NOW

TDDL-4200 ERR_GROUP_NOT_AVALILABLE

TDDL-4201 ERR_GROUP_NO_ATOM_AVALILABLE

TDDL-4202 ERR_SQL_QUERY_TIMEOUT

TDDL-4203 ERR_SQL_QUERY_MERGE_TIMEOUT

TDDL-4400 ERR_SEQUENCE

TDDL-4401 ERR_MISS_SEQUENCE

TDDL-4403 ERR_MISS_SEQUENCE_TABLE_ON_DEFAULT_DB

TDDL-4404 ERR_SEQUENCE_TABLE_META

TDDL-4405 ERR_INIT_SEQUENCE_FROM_DB

TDDL-4407 ERR_OTHER_WHEN_BUILD_SEQUENCE

TDDL-4408 ERR_SEQUENCE_NEXT_VALUE

TDDL-4500 ERR_PARSER

TDDL-4501 ERR_OPTIMIZER

TDDL-4502 ERR_OPTIMIZER_MISS_ORDER_FUNCTION_IN_SELECT

TDDL-4504 ERR_OPTIMIZER_SELF_CROSS_JOIN

TDDL-4506 ERR_MODIFY_SHARD_COLUMN

TDDL-4508 ERR_OPTIMIZER_NOT_ALLOWED_SORT_MERGE_JOIN

TDDL-4509 ERR_OPTIMIZER_ERROR_HINT

TDDL-4510 ERR_CONTAINS_NO_SHARDING_KEY

TDDL-4511 ERR_INSERT_CONTAINS_NO_SHARDING_KEY

TDDL-4515 ERR_CONNECTION_CHARSET_NOT_MATCH

TDDL-4516 ERR_TRUNCATED_DOUBLE_VALUE_OVERFLOW

TDDL-4517 ERR_MODIFY_SYSTEM_TABLE

TDDL-4600 ERR_FUNCTION

TDDL-4601 ERR_EXECUTOR

TDDL-4602 ERR_CONVERTOR

TDDL-4603 ERR_ACCROSS_DB_TRANSACTION

TDDL-4604 ERR_CONCURRENT_TRANSACTION

TDDL-4606 ERR_QUERY_CANCLED

TDDL-4607 ERR_INSERT_WHEN_UPDATE

TDDL-4610 ERR_CONNECTION_CLOSED

TDDL-1305 ERR_UNKNOWN_SAVEPOINT

TDDL-1094 ERR_UNKNOWN_THREAD_ID

TDDL-4612 ERR_CHECK_SQL_PRIV

TDDL-4613 ERR_INSERT_SELECT

TDDL-4614 ERR_EXECUTE_ON_MYSQL

TDDL-4615 ERR_CROSS_JOIN_SIZE_PROTECTION

TDDL-4616 ERR_UNKNOWN_DATABASE

TDDL-4800 ERR_SET_TXCID

TDDL-4801 ERR_TXCID_NULL

TDDL-4802 ERR_SELECT_LAST_TXCID

TDDL-4994 ERR_FLOW_CONTROL

TDDL-4998 ERR_NOT_SUPPORT

TDDL-4006 ERR_TABLE_NOT_EXIST

DRDS 數據表不存在。

示例:

ERR-CODE: [TDDL-4006][ERR_TABLE_NOT_EXIST] Table '*****' doesn't exist.

該錯誤表示 DRDS 數據表不存在,或者由于未知原因,DRDS 無法加載數據表的元數據信息。

如果出現該錯誤,請聯系客服或 提工單。

TDDL-4007 ERR_CANNOT_FETCH_TABLE_META

DRDS 無法加載數據表的元數據信息。

示例:

ERR-CODE: [TDDL-4007][ERR_CANNOT_FETCH_TABLE_META] Table '*****' metadata

cannot be fetched because Table '*****.*****' doesn't exist.

該錯誤表示 DRDS 嘗試讀取數據表的元數據信息失敗。錯誤原因可能是:

數據表未創建。

分庫上的表名被人為刪除或改名。

RDS/MySQL 無法連接。

出現該錯誤時,請首先檢查表名是否存在,然后確認 DRDS 后端所有 RDS/MySQL 狀態是否正常。

如果確定表名被人為刪除或改名,可以通過 RDS/MySQL 的數據恢復功能修復。如果仍無法修復,請聯系客服或 提工單 解決此問題。

TDDL-4100 ERR_ATOM_NOT_AVALILABLE

DRDS 后端 RDS/MySQL 暫時不可用。

示例:

ERR-CODE: [TDDL-4100][ERR_ATOM_NOT_AVALILABLE] Atom : ***** isNotAvailable

如果 DRDS 探測到后端某個 RDS/MySQL 實例狀態異常,會臨時阻止訪問該實例并提示 TDDL-4100 錯誤。當遇到該錯誤,請檢查 DRDS 后端所有 RDS/MySQL 是否異常,并嘗試進行恢復。

當 RDS/MySQL 實例從異常狀態恢復后,DRDS 將自動解除不可用狀態,恢復應用正常訪問。

TDDL-4101 ERR_ATOM_GET_CONNECTION_FAILED_UNKNOWN_REASON

未知原因的 DRDS 后端連接獲取失敗。

示例:

ERR-CODE: [TDDL-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.

DRDS 在處理請求時會向后端 RDS/MySQL 異步創建連接。如果無法在等待時間內完成 RDS/MySQL 連接創建,而異步任務又尚未返回錯誤原因,DRDS 會向應用返回 TDDL-4101 錯誤。

該錯誤通常是由后端 RDS/MySQL 異常導致的。如果排除 RDS/MySQL 問題后仍然出現該錯誤,請聯系客服或 提工單。

TDDL-4102 ERR_ATOM_GET_CONNECTION_FAILED_KNOWN_REASON

已知原因的 DRDS 后端連接獲取失敗。

示例:

ERR-CODE: [TDDL-4102][ERR_ATOM_GET_CONNECTION_FAILED_KNOWN_REASON] Get

connection for db '*****' failed because wait millis 5000, active 0,

maxActive 5

DRDS 獲取后端 RDS/MySQL 連接時出錯,錯誤原因已經在 ERR-CODE: 消息中給出。

常見 DRDS 后端連接失敗的原因有:

后端 RDS/MySQL 連接數已滿

RDS/MySQL 連接超時

RDS/MySQL 拒絕連接

如果排除后端 RDS/MySQL 問題后仍然出現該錯誤,請聯系客服或 提工單。

TDDL-4103 ERR_ATOM_CONNECTION_POOL_FULL

DRDS 后端 RDS/MySQL 連接池已滿。

示例:

ERR-CODE: [TDDL-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.

該錯誤表示 DRDS 后端連接池已滿。導致 TDDL-4103 錯誤的常見原因如下:

應用 SQL 語句執行比較慢,占用單個連接的時間過長,導致連接數不夠。

應用端沒有關閉數據庫連接,導致連接泄露。

有很多跨庫查詢(例如聚合統計類查詢,未帶分庫條件的查詢)同時執行,占用大量連接。

解決方法建議:

盡量使用框架訪問數據庫,例如 Spring JDBC,MyBatis 等。

按 RDS 性能分析報告與 DBA 建議優化業務 SQL 語句。

使用 DRDS 讀寫分離將跨庫查詢轉發至讀庫處理。

升級更高規格的 RDS 實例,提升后端處理能力。

聯系客服或 提工單 調整 DRDS 后端連接數。

TDDL-4104 ERR_ATOM_CREATE_CONNECTION_TOO_SLOW

DRDS 后端 RDS/MySQL 連接創建太慢。

示例:

ERR-CODE: [TDDL-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.

DRDS 向后端 RDS/MySQL 異步創建連接時,如果在短時間創建大量連接,或者 RDS/MySQL 建立連接速度太慢,會出現等待超時。

該問題通常是由后端 RDS/MySQL 壓力過大或異常導致的,建議使用 DRDS 讀寫分離,或者升級更高規格的 RDS 實例,減輕后端處理壓力。

如果排除 RDS/MySQL 問題后仍然出現該錯誤,請聯系客服或 提工單。

如果問題是由短時間創建大量連接導致,考慮聯系客服或 提工單 調整 DRDS 最小連接數。

TDDL-4105 ERR_ATOM_ACCESS_DENIED

DRDS 后端 RDS/MySQL 拒絕創建連接。

示例:

ERR-CODE: [TDDL-4105][ERR_ATOM_ACCESS_DENIED] DB '*****' Access denied for

user '*****'@'*****'. AppName:*****, Env:*****, UnitName:null. Please

contact DBA to check.

該錯誤表明 DRDS 通過用戶名/密碼連接 RDS/MySQL 時被拒絕訪問。

如果不小心在后端 RDS/MySQL 上修改了由 DRDS 自動創建的用戶名/密碼,就會導致 DRDS 提示 TDDL-4105 錯誤。修復該問題需要手工訂正 DRDS 用戶名/密碼,請聯系客服或 提工單。

此外,后端 RDS 實例欠費/到期后會拒絕所有訪問請求,也導致 DRDS 產生 TDDL-4105 錯誤。如果遇到這種情況,請及時給 RDS 實例續費。

TDDL-4106 ERR_ATOM_DB_DOWN

DRDS 后端 RDS/MySQL 無法連接。

示例:

ERR-CODE: [TDDL-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.

該錯誤表示 DRDS 向后端 RDS/MySQL 創建連接超時或沒有響應。遇到該錯誤的通常原因是 RDS/MySQL 故障,請聯系客服或 提工單。

TDDL-4108 ERR_VARIABLE_CAN_NOT_SET_TO_NULL_FOR_NOW

變量 (variable) 不允許被設置為 NULL。

示例:

ERR-CODE: [TDDL-4108][ERR_VARIABLE_CAN_NOT_SET_TO_NULL_FOR_NOW] System

variable ***** can''t set to null for now;

有些 MySQL 變量 (variable) 不允許用 SET var = x 語句設置成 NULL 值。遇到這種情況,DRDS 會提示 TDDL-4108 錯誤。

如果遇到該錯誤,請檢查傳遞的變量 (variable) 值,并參考 MySQL 官方文檔改正:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html

TDDL-4200 ERR_GROUP_NOT_AVALILABLE

DRDS 分庫暫時不可用。

示例:

ERR-CODE: [TDDL-4200][ERR_GROUP_NOT_AVALILABLE] The TDDL Group ***** is

running in fail-fast status, caused by this SQL:***** which threw a fatal

exception as *****.

當分庫包含的 RDS/MySQL 實例出現訪問異常,并且分庫下沒有其他可用實例時,DRDS 會將分庫置于 fail-fast 狀態并提示 TDDL-4200 錯誤。

通常該錯誤是由于 RDS/MySQL 故障導致的。請根據包含的 RDS/MySQL 實例異常信息定位和解決問題。當故障 RDS/MySQL 實例恢復后,DRDS 將自動取消 fail-fast 狀態。

如果 RDS/MySQL 故障解決后仍然出現 TDDL-4200 錯誤,請聯系客服或 提工單。

TDDL-4201 ERR_GROUP_NO_ATOM_AVALILABLE

DRDS 分庫內暫時沒有可用 RDS/MySQL 實例。

示例:

ERR-CODE: [TDDL-4201][ERR_GROUP_NO_ATOM_AVALILABLE] All weights of DBs in

Group '*****' is 0. Weights is: *****.

當分庫包含的 RDS/MySQL 實例全都不可用,或者處于 fail-fast 狀態時,DRDS 會提示 TDDL-4201 錯誤。

通常該錯誤是由于 RDS/MySQL 故障導致的。請檢查后端 RDS/MySQL 實例狀態以定位和解決問題。如果故障解決后仍然出現 TDDL-4201 錯誤,請聯系客服或 提工單。

TDDL-4202 ERR_SQL_QUERY_TIMEOUT

DRDS 查詢超時。

示例:

ERR-CODE: [TDDL-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 語句在后端 RDS/MySQL 實例上的執行時間超過 DRDS 設置的 socketTimeout 參數限制。默認的 DRDS 超時(socketTimeout)時間設置是 900 秒。

建議優化 SQL 語句,以及在后端 RDS/MySQL 上創建適合的索引以提升 SQL 語句的執行性能。

如果優化后的 SQL 語句仍然較慢,可以使用下面的 DRDS Hint 語法臨時設置 DRDS 的超時(socketTimeout)時間:

/*TDDL:SOCKET_TIMEOUT=900000*/ SELECT * FROM dual;

其中 SOCKET_TIMEOUT 設置的單位是毫秒。

有關 DRDS Hint 請參考文檔:

https://help.aliyun.com/document_detail/51246.html

如果需要永久調整 DRDS 超時(socketTimeout)設置,請聯系客服或 提工單。

TDDL-4203 ERR_SQL_QUERY_MERGE_TIMEOUT

DRDS 分布式查詢超時。

示例:

ERR-CODE: [TDDL-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 *****

該錯誤表示 DRDS 執行分布式查詢超時,默認的超時設置是 900 秒(15 分鐘)。

產生 TDDL-4203 錯誤表示 SQL 語句掃描了多個分庫的數據并且執行時間超過 900 秒,建議進行優化:

盡量在 WHERE 條件中添加分庫鍵(Sharding key) 條件,將 SQL 語句優化成單庫執行。

檢查是否可以在后端 RDS/MySQL 上創建適合的索引,提升掃描各個分庫數據的性能。

設法消除分布式查詢中的跨庫 JOIN,數據重排序等耗時操作,降低 DRDS 數據合并階段的消耗。

如果優化后的 SQL 語句仍然較慢,可以使用下面的 DRDS Hint 語法臨時設置 DRDS 的超時(socketTimeout)時間:

/*TDDL:SOCKET_TIMEOUT=900000*/ SELECT * FROM dual;

其中 SOCKET_TIMEOUT 設置的單位是毫秒。

有關 DRDS Hint 請參考文檔:

https://help.aliyun.com/document_detail/51246.html

如果仍然出現 TDDL-4203 錯誤,請聯系客服或 提工單。

TDDL-4400 ERR_SEQUENCE

處理 Sequence(全局唯一序列)失敗。

示例:

ERR-CODE: [TDDL-4400][ERR_SEQUENCE] Sequence : All dataSource faild to get

value!

處理 DRDS Sequence 出錯,錯誤信息在 Sequence : 中給出。

導致 TDDL-4400 的常見原因是 RDS/MySQL 故障,無法訪問 Sequence 有關的數據表。建議先檢查后端 RDS/MySQL 狀態。如果排除 RDS/MySQL 故障后仍然發生錯誤,請聯系客服或 提工單。

TDDL-4401 ERR_MISS_SEQUENCE

Sequence 不存在。

示例:

ERR-CODE: [TDDL-4401][ERR_MISS_SEQUENCE] Sequence '*****' is not found

命令中使用的 Sequence 名稱不存在。建議用 SHOW SEQUENCES 命令檢查 DRDS 中所有已創建的 Sequence 名稱,并且選擇正確的 Sequence 使用。

如果使用的 Sequence 尚不存在,可以用 CREATE SEQUENCE 語法創建:

CREATE SEQUENCE [ START WITH ]

[ INCREMENT BY ] [ MAXVALUE ]

[ CYCLE | NOCYCLE ]`

如果使用的 Sequence 已經存在,但是仍然提示 TDDL-4401 錯誤,請聯系客服或 提工單。

有關 DRDS Sequence,請參考:

https://help.aliyun.com/document_detail/29675.html

TDDL-4403 ERR_MISS_SEQUENCE_TABLE_ON_DEFAULT_DB

Sequence 使用的數據表不存在。

示例:

ERR-CODE: [TDDL-4403][ERR_MISS_SEQUENCE_TABLE_ON_DEFAULT_DB] Sequence table

is not in default db.

無法在 DRDS 后端的數據庫里訪問名稱叫 sequence 或者 sequence_opt 的數據表。請聯系客服或者 提工單 解決此問題。

TDDL-4404 ERR_SEQUENCE_TABLE_META

Sequence 數據表結構錯誤。

示例:

ERR-CODE: [TDDL-4404][ERR_SEQUENCE_TABLE_META] the meta of sequence table

is error, some columns missed

Sequence 相關數據表(sequence 或 sequence_opt )中缺少相應的字段。請聯系客服或者 提工單 解決此問題。

TDDL-4405 ERR_INIT_SEQUENCE_FROM_DB

初始化 Sequence 錯誤。

示例:

ERR-CODE: [TDDL-4405][ERR_INIT_SEQUENCE_FROM_DB] init sequence manager

error: *****

在初始化需要訪問的 Sequence 時出錯,錯誤信息在 init sequence manager error: 后給出。

建議先檢查 DRDS 后端 RDS/MySQL 狀態。如果排除 RDS/MySQL 故障后仍然提示 TDDL-4405 錯誤,請聯系客服或 提工單。

TDDL-4407 ERR_OTHER_WHEN_BUILD_SEQUENCE

訪問 Sequence 數據表出錯。

示例:

ERR-CODE: [TDDL-4407][ERR_OTHER_WHEN_BUILD_SEQUENCE] error when build

sequence: *****

在訪問 Sequence 相關數據表(sequence 或 sequence_opt )時發生錯誤。錯誤信息在 error when build sequence: 后給出。

建議先檢查 DRDS 后端 RDS/MySQL 狀態。如果排除 RDS/MySQL 故障后仍然提示 TDDL-4407 錯誤,請聯系客服或 提工單。

TDDL-4408 ERR_SEQUENCE_NEXT_VALUE

獲取 Sequence 值出錯。

示例:

ERR-CODE: [TDDL-4408][ERR_SEQUENCE_NEXT_VALUE] error when get sequence's

next value, sequence is: *****, error: *****

使用 DRDS 自增主鍵,或者使用 .NEXTVAL 語法手工獲取全局唯一 ID 時發生錯誤。錯誤原因在 error: 提示后給出。

通常產生 TDDL-4408 錯誤的原因來自后端的 RDS/MySQL 故障。建議先檢查 DRDS 后端 RDS/MySQL 狀態和訪問壓力。如果排除 RDS/MySQL 故障后仍然提示 TDDL-4408 錯誤,請聯系客服或 提工單。

TDDL-4500 ERR_PARSER

解析 SQL 語句失敗。

示例:

ERR-CODE: [TDDL-4500][ERR_PARSER] not support statement: '*****'

DRDS 支持符合 SQL-92 標準的 SQL 語法,以及 MySQL 支持的語法擴展與函數。請檢查執行的 SQL 語句是否符合 DRDS 兼容的 SQL 標準及 MySQL 規范:

SQL 標準語法請參考:https://www.w3schools.com/sql/

DRDS 兼容的 SQL 語法請參考:

https://help.aliyun.com/document_detail/49249.html

MySQL(5.6) SQL 語法請參考:https://dev.mysql.com/doc/refman/5.6/en/sql-syntax.html

如果您的 SQL 語句符合上述語法仍然提示 TDDL-4500 錯誤,請聯系客服或者 提工單。

TDDL-4501 ERR_OPTIMIZER

優化器轉換 SQL 語句失敗。

示例:

ERR-CODE: [TDDL-4501][ERR_OPTIMIZER] optimize error by: Unknown column

'*****' in 'order clause'

DRDS 優化器的工作是轉換 SQL 語句到內部語法樹。如果 SQL 語句中出現邏輯錯誤,優化器轉換就會失敗,產生 TDDL-4501 錯誤。

建議按照 optimize error by: 后的提示檢查和調整您的 SQL 語句。如果調整 SQL 語句后仍然提示 TDDL-4501 錯誤,請聯系客服或 提工單。

TDDL-4502 ERR_OPTIMIZER_MISS_ORDER_FUNCTION_IN_SELECT

ORDER BY 包含的函數列在 SELECT 子句中不存在。

示例:

ERR-CODE: [TDDL-4502][ERR_OPTIMIZER_MISS_ORDER_FUNCTION_IN_SELECT] Syntax

Error: orderBy/GroupBy Column ***** is not existed in select clause`

當 SQL 語句中的 ORDER BY 子句包含函數列 (例如 RAND()) 時,DRDS 要求同樣的函數列必須也在 SELECT 子句中出現,否則提示 TDDL-4502 錯誤。

建議在 SELECT 子句中添加相應的函數列。

TDDL-4504 ERR_OPTIMIZER_SELF_CROSS_JOIN

相同表 JOIN 的條件不足。

示例:

ERR-CODE: [TDDL-4504][ERR_OPTIMIZER_SELF_CROSS_JOIN] self cross join case,

add shard column filter on right table

DRDS 在執行相同表的 JOIN 時,如果 WHERE 子句只包含其中一張左表(或右表)的拆分字段(sharding column)條件,會提示 TDDL-4504 錯誤。

建議調整 SQL 語句,在 WHERE 子句中補全 JOIN 左表(或右表)的拆分字段條件。

TDDL-4506 ERR_MODIFY_SHARD_COLUMN

禁止更新拆分鍵。

示例:

ERR-CODE: [TDDL-4506][ERR_MODIFY_SHARD_COLUMN] Column '*****' is a sharding

key of table '*****', which is forbidden to be modified.

DRDS 禁止使用 UPDATE 語句修改拆分鍵(sharding key)的值。由于這一操作很可能會改變數據所在的分片,DRDS 無法保證操作的原子性與數據的一致性。

建議將對應 UPDATE 語句修改為相同效果的 INSERT + DELETE 語句。

TDDL-4508 ERR_OPTIMIZER_NOT_ALLOWED_SORT_MERGE_JOIN

無法執行合并排序 JOIN。

示例:

ERR-CODE: [TDDL-4508][ERR_OPTIMIZER_NOT_ALLOWED_SORT_MERGE_JOIN] sort merge

join is not allowed when missing equivalent filter

如果 SQL 語句中需要 JOIN 的數據表分別來自不同的 RDS/MySQL 實例,DRDS 會優先選擇合并排序算法(Sort-merge Join)。該算法要求 JOIN 的左表與右表必須包含字段相等的關聯條件,否則 DRDS 將提示 TDDL-4508 錯誤。

建議調整 SQL 語句,在 JOIN 或 WHERE 部分添加相應的關聯條件。

TDDL-4509 ERR_OPTIMIZER_ERROR_HINT

Hint 語法錯誤。

示例:

ERR-CODE: [TDDL-4509][ERR_OPTIMIZER_ERROR_HINT] Hint Syntax Error:

unexpected operation: *****.

該錯誤表示 SQL 語句中的 Hint 語法無法被 DRDS 解析。請參考阿里云 DRDS 文檔調整您的 Hint 語法:

https://help.aliyun.com/document_detail/51242.html

TDDL-4510 ERR_CONTAINS_NO_SHARDING_KEY

缺少拆分鍵 (sharding key) 條件。

示例:

ERR-CODE: [TDDL-4510][ERR_CONTAINS_NO_SHARDING_KEY] Your SQL contains NO

SHARDING KEY '*****' for table '*****', which is not allowed in DEFAULT.

如果 DRDS 拆分表沒有開啟 “全表掃描”(full-table scan)功能,則訪問該表時必須在 WHERE 子句中包含拆分鍵條件。否則,DRDS 將提示 TDDL-4510 錯誤。

DRDS 在建表時默認開啟 “全表掃描” 功能。如果手工關閉 “全表掃描” ,建議確認與該表有關的 SQL 語句都已添加拆分鍵條件。

TDDL-4511 ERR_INSERT_CONTAINS_NO_SHARDING_KEY

INSERT 語句缺少拆分鍵 (sharding key)。

示例:

ERR-CODE: [TDDL-4511][ERR_INSERT_CONTAINS_NO_SHARDING_KEY] Your INSERT SQL

contains NO SHARDING KEY '*****' for table '*****'.

當 INSERT 語句的目標是一張 DRDS 拆分表時,必須在插入數據中包含拆分鍵的值(拆分鍵是自增主鍵例外)。否則,DRDS 將提示 TDDL-4511 錯誤。

如果遇到該錯誤,建議修改 INSERT 語句補充缺少的拆分鍵值。

TDDL-4515 ERR_CONNECTION_CHARSET_NOT_MATCH

輸入字符集不匹配。

示例:

ERR-CODE: [TDDL-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.

DRDS 支持用中文字符命名表名及字段名。在執行含有中文字符的 SQL 語句時,如果數據庫連接的字符集設置 (character_set_connection) 不支持中文 (例如 latin1),會提示 TDDL-4515 錯誤。

您可以使用 SHOW VARIABLES LIKE 'character_set_connection' 查詢 MySQL 客戶端當前的連接字符集,使用 SET NAMES x 命令修改當前連接字符集。如果是 Java 程序 JDBC 方式連接 DRDS,請設置數據庫連接參數 characterEncoding。

TDDL-4516 ERR_TRUNCATED_DOUBLE_VALUE_OVERFLOW

浮點數轉換為整數溢出。

示例:

ERR-CODE: [TDDL-4616][ERR_TRUNCATED_DOUBLE_VALUE_OVERFLOW] Truncated

incorrect DOUBLE value '*****' over column[*****]'s value range.

DRDS 在把浮點數轉換成對應類型的整數時,結果超過了整數類型的取值范圍。建議檢查 SQL 語句中的字段類型和輸入參數。

TDDL-4517 ERR_MODIFY_SYSTEM_TABLE

禁止修改系統表。

示例:

ERR-CODE: [TDDL-4617][ERR_MODIFY_SYSTEM_TABLE] Table '*****' is DRDS SYSTEM

TABLE, which is forbidden to be modified.

DRDS 內部維護了一些系統表,使用 SQL 語句更新其中的數據會提示 TDDL-4517 錯誤。

限制的系統表包括:sequence,sequence_opt,txc_undo_log,__DRDS__SYSTEM__LOCK__,請在業務或數據庫設計中避免使用這些表名。

TDDL-4600 ERR_FUNCTION

錯誤的函數調用。

示例:

ERR-CODE: [TDDL-4600][ERR_FUNCTION] function compute error by Incorrect

parameter count in the call to native function '*****'

該錯誤表明在 SQL 語句中使用了錯誤的語法或參數調用函數。建議仔細檢查 SQL 語句中的函數調用部分,并且使用正確的參數個數和類型調用函數。

TDDL-4601 ERR_EXECUTOR

SQL 執行過程出錯。

示例:

ERR-CODE: [TDDL-4601][ERR_EXECUTOR] only one column is supported in

distinct aggregate

該錯誤代表 DRDS 在執行 SQL 語句過程中出現了意外錯誤。這類錯誤通常與后端 RDS/MySQL 異常狀態有關。建議先檢查后端 RDS/MySQL,如果排除 RDS/MySQL 故障后仍然發生此類錯誤,請聯系客服或 提工單。

TDDL-4602 ERR_CONVERTOR

錯誤的類型轉換。

示例:

ERR-CODE: [TDDL-4602][ERR_CONVERTOR] convertor error by Unsupported convert:

[*****]

該錯誤表明 DRDS 在執行 SQL 時進行數據類型轉換失敗。請檢查 SQL 語句中是否存在需要隱式類型轉換的數據,并且盡量使用相同類型進行比較和計算。

TDDL-4603 ERR_ACCROSS_DB_TRANSACTION

跨庫事務失敗。

示例:

ERR-CODE: [TDDL-4603][ERR_ACCROSS_DB_TRANSACTION] Transaction accross db is

not supported in current transaction policy, transaction node is: {0}, but

this sql execute on: *****.

DRDS 默認僅支持單庫事務,即事務中的所有 SQL 語句都必須按規則轉發到相同 RDS/MySQL 分庫執行。否則,將提示 TDDL-4603 錯誤。

如果您的業務需要用分布式事務功能,即事務中的 SQL 語句需要被轉發到不同的 RDS/MySQL 分庫下執行,建議使用 GTS 分布式事務框架。GTS 可以很好與 DRDS 協同工作,確保跨越不同數據庫,或者不同服務的事務原子性和一致性。

GTS 產品的文檔:

https://help.aliyun.com/product/48444.html

TDDL-4604 ERR_CONCURRENT_TRANSACTION

嵌套事務失敗。

示例:

ERR-CODE: [TDDL-4604][ERR_CONCURRENT_TRANSACTION] Concurrent query is not

supported on transaction group, transaction group is: {0}.

DRDS 不支持嵌套事務,如果在同一個數據庫連接里嘗試同時開啟 2 個以上事務,將提示 TDDL-4604 錯誤。

建議在應用開發時避免使用嵌套事務,或者使用應用層的事務框架防止產生嵌套事務。

TDDL-4606 ERR_QUERY_CANCLED

當前執行的 SQL 被取消。

示例:

ERR-CODE: [TDDL-4606][ERR_QUERY_CANCLED] Getting connection is not allowed

when query has been cancled, group is *****

使用 KILL x 取消某條 SQL 語句的執行時,被取消的 SQL 語句會返回該錯誤。如果經常出現這一情況,請排查是否有客戶端或程序在執行 KILL 命令。

TDDL-4607 ERR_INSERT_WHEN_UPDATE

以 INSERT DELETE 方式執行 UPDATE 語句時出錯。

示例:

ERR-CODE: [TDDL-4607][ERR_INSERT_WHEN_UPDATE] Insert new values error,

table is: *****, old Values: *****, new Values: *****

開啟允許更新分庫鍵(Sharding-key)功能后,DRDS 可以將 UPDATE 分庫鍵值的 SQL 語句按照 INSERT + DELETE 方式轉換執行。如果執行失敗,則提示 TDDL-4607 錯誤。

該錯誤通常是因為后端 RDS/MySQL 故障導致的。建議首先檢查 RDS/MySQL 狀態,如果排除 RDS/MySQL 故障后仍然發生錯誤,請聯系客服或 提工單。

TDDL-4610 ERR_CONNECTION_CLOSED

連接已經關閉。

示例:

ERR-CODE: [TDDL-4610][ERR_CONNECTION_CLOSED] connection has been closed

當事務中的 SQL 語句執行出錯,或者被 KILL 命令取消后,重復使用同一個數據庫連接執行其他 SQL 語句會提示 TDDL-4610 錯誤。

建議在該情況下關閉連接,重新獲取一個新的數據庫連接。

TDDL-1305 ERR_UNKNOWN_SAVEPOINT

指定名稱的 SAVEPOINT 不存在。

示例:

ERR-CODE: [TDDL-1305][ERR_UNKNOWN_SAVEPOINT] SAVEPOINT ***** does not exist

在 DRDS 上執行 ROLLBACK TO SAVEPOINT x 或者 RELEASE SAVEPOINT x 命令時,如果指定的 SAVEPOINT 名稱不存在,會提示 TDDL-1305 錯誤。

建議檢查 SAVEPOINT 命令返回的名稱是否和使用的名稱一致。

TDDL-1094 ERR_UNKNOWN_THREAD_ID

KILL 命令指定的會話 id 不存在。

示例:

ERR-CODE: [TDDL-1094][ERR_UNKNOWN_THREAD_ID] Unknown thread id: *****

在 DRDS 上執行 KILL x 命令取消執行的 SQL 語句時,如果指定的會話 id 不存在,或者對應的 SQL 語句已經結束執行,會提示 TDDL-1094 錯誤。

建議使用 SHOW PROCESSLIST 命令查看正在執行的 SQL 語句會話 id,并只使用返回的 ID 執行 KILL 操作。

TDDL-4612 ERR_CHECK_SQL_PRIV

由于權限不夠,SQL 語句無法執行。

示例:

ERR-CODE: [TDDL-4612][ERR_CHECK_SQL_PRIV] check user ***** on db ***** sql

privileges failed.

DRDS 的新版本支持賬號和授權,類似 MySQL 賬號權限體系,只有擁有對應類型權限的賬號才能執行該 SQL 語句。如果賬號權限不足,DRDS 將提示 TDDL-4612 錯誤。

建議檢查用戶擁有的 DRDS 權限。如果權限不足,請在 DRDS 控制臺設置。

DRDS 賬號與權限設置請參考:

https://help.aliyun.com/document_detail/50890.html

TDDL-4613 ERR_INSERT_SELECT

執行 INSERT ... SELECT 語句出錯。

示例:

ERR-CODE: [TDDL-4613][ERR_INSERT_SELECT] insert error, table is: *****,

values: *****

DRDS 支持將跨庫的 INSERT ... SELECT 語句拆分成獨立的 SELECT 和 INSERT 語句批量執行。如果執行失敗,則提示 TDDL-4613 錯誤。

該錯誤通常是因為后端 RDS/MySQL 故障導致的。建議首先檢查 RDS/MySQL 狀態,如果排除 RDS/MySQL 故障后仍然發生錯誤,請聯系客服或 提工單。

TDDL-4614 ERR_EXECUTE_ON_MYSQL

SQL 語句在 RDS/MySQL 上執行報錯。

示例:

ERR-CODE: [TDDL-4614][ERR_EXECUTE_ON_MYSQL] Error occurs when execute on

GROUP '*****': Duplicate entry '*****' for key 'PRIMARY'

DRDS 在后端 RDS/MySQL 數據庫上執行 SQL 語句報錯,末尾包含了從 RDS/MySQL 返回的原始錯誤信息,例如:

Duplicate entry '*****' for key 'PRIMARY'

代表寫入 RDS/MySQL 數據表發生了主鍵沖突。

The table '*****' is full

表示 RDS/MySQL 使用的臨時表已滿,需要調整臨時表空間或優化 SQL 語句。

Deadlock found when trying to get lock;

代表在 RDS/MySQL 中出現了死鎖,通常是數據寫入存在較多事務沖突導致的。

建議參考 TDDL-4614 提供的原始錯誤信息排查問題。更多的錯誤信息請參考 MySQL(5.6) 文檔:

https://dev.mysql.com/doc/refman/5.6/en/error-handling.html

如果排除應用或 RDS/MySQL 問題后仍然發生 TDDL-4614 錯誤,請聯系客服或 提工單。

TDDL-4615 ERR_CROSS_JOIN_SIZE_PROTECTION

分布式 JOIN 返回的數據行數超出限制。

示例:

ERR-CODE: [TDDL-4615][ERR_CROSS_JOIN_SIZE_PROTECTION] across join table

size protection, check your sql or enlarge the limination size .

當 DRDS 以嵌套循環 (Nested-loop) 方式執行分布式 JOIN 語句時,如果從右表返回大量數據,將嚴重占據內存,影響 DRDS 服務的穩定性。因此,我們限制這種情況下右表返回的數據行數最多不能超過 5000。如果超出這一限制,DRDS 會提示 TDDL-4615 錯誤。

建議優化 SQL 語句避免從右表返回大量數據,或者讓 DRDS 能夠使用更好的算法執行分布式 JOIN,例如:合并排序 (Sort-merge Join)。

如果需要針對某個具體 SQL 調整該值,建議按以下原則操作:

如果單條記錄超過 100K,不建議調整該值。

如果單條記錄不超過 100K,可以適當調整。建議不要設置太大的值,否則會有爆內存的風險。

假設單條記錄是 100K,參與分布式 JOIN 計算的內存就需要 100K * 5000 = 500M。如果有多個連接都在運行該 SQL,很容易引起爆內存,例如有 5 個連接同時在運行該 SQL,就需要 500M * 5 = 2500M = 2.5G。

如果確實需要調整,請在需要調整的 SQL 前面加 HINT,例如調整成 5100:/*!TDDL:MAX_ROW_RETURN_FROM_RIGHT_INDEX_NESTED_LOOP=5100*/SQL

如果需要全局修改這一限制,可以聯系客服或者提工單。

TDDL-4616 ERR_UNKNOWN_DATABASE

錯誤的數據庫。

示例:

ERR-CODE: [TDDL-4616][ERR_UNKNOWN_DATABASE] Unknown database '*****'

DRDS 允許在 DDL 語句中指定數據庫名稱。如果指定的數據庫名稱與 DRDS 提供的數據庫名稱不一致,將返回 TDDL-4616 錯誤。

建議修改 DDL 語句中的數據庫名稱,確保與 DRDS 數據庫名稱一致。

TDDL-4617 ERR_SUBQUERY_LIMIT_PROTECTION

子查詢返回的數據行數超出限制。

示例:

ERR-CODE: [TDDL-4617][ERR_SUBQUERY_LIMIT_PROTECTION] The number of rows

returned by the subquery exceeds the maximum number of 20000.

當 DRDS 執行含子查詢 (Sub-query) 的 SQL 語句時,如果子查詢返回大量數據,會嚴重占據內存,影響 DRDS 服務的穩定性。因此,我們限制這種情況下子查詢返回的數據行數最多不能超過 20000。如果超出這一限制,DRDS 會返回 TDDL-4617 錯誤。

建議優化 SQL 語句中的子查詢避免返回大量數據。或者,設法將子查詢改寫成 JOIN 形式,讓 DRDS 能夠使用更好的算法(例如:合并排序 Sort-merge Join)執行。

如果需要修改這一限制,可以聯系客服或者 提工單。

TDDL-4800 ERR_SET_TXCID

執行 SET TXC_XID x 命令失敗。

示例:

ERR-CODE: [TDDL-4800][ERR_SET_TXCID] set txc_id failed: *****

原因請參考 GTS 文檔:

https://help.aliyun.com/document_detail/48726.html

TDDL-4801 ERR_TXCID_NULL

執行 SELECT LAST_TXC_ID 命令返回 null。

示例:

ERR-CODE: [TDDL-4801][ERR_TXCID_NULL] txc_xid is null: *****

原因請參考 GTS 文檔:

https://help.aliyun.com/document_detail/48726.html

TDDL-4802 ERR_SELECT_LAST_TXCID

執行 SELECT LAST_TXC_ID 命令失敗。

示例:

ERR-CODE: [TDDL-4802][ERR_SELECT_LAST_TXCID] select last_txc_xid failed:

*****

原因請參考 GTS 文檔:

https://help.aliyun.com/document_detail/48726.html

TDDL-4994 ERR_FLOW_CONTROL

流量控制。

示例:

ERR-CODE: [TDDL-4994][ERR_FLOW_CONTROL] [*****] flow control by *****

該錯誤代表 DRDS 處理 SQL 請求已達到內部流量上限,當前請求被拒絕。

建議檢查 SQL 請求量是否存在異常峰值。如果觀察到 SQL 請求量下降后,仍然大量提示 TDDL-4994 錯誤,請聯系客服或 提工單。

TDDL-4998 ERR_NOT_SUPPORT

不支持的特性。

示例:

ERR-CODE: [TDDL-4998][ERR_NOT_SUPPORT] ***** not support yet!

該錯誤代表使用的 SQL 語法或者功能 DRDS 尚不支持。

如果這些 SQL 語法或者功能對您十分重要,歡迎聯系客服或者 提工單 給出建議。

SQL

算法

關系型數據庫

MySQL

數據庫連接

分布式數據庫

數據庫

數據安全/隱私保護

數據庫管理

RDS

添加回答

分享到

總結

以上是生活随笔為你收集整理的drds 解决问题_DRDS 错误代码如何解决?-问答-阿里云开发者社区-阿里云的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。