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 等。</