本文档列出了PolarDB-X返回的常见错误码及解决方法。
TDDL-4006 ERR_TABLE_NOT_EXIST
PolarDB-X数据表不存在。
示例:
ERR-CODE:[TDDL-4006][ERR_TABLE_NOT_EXIST]Table'*****'doesn't exist.
该错误表示PolarDB-X数据表不存在,或者由于未知原因,PolarDB-X无法加载数据表的元数据信息。
如果出现该错误,请联系客服或提工单。
TDDL-4007 ERR_CANNOT_FETCH_TABLE_META
PolarDB-X无法加载数据表的元数据信息。
示例:
ERR-CODE:[TDDL-4007][ERR_CANNOT_FETCH_TABLE_META]Table'*****'metadata
cannot be fetched becauseTable'*****.*****'doesn't exist.
该错误表示PolarDB-X尝试读取数据表的元数据信息失败。可能的错误原因如下:
数据表未创建。
分库上的表名被人为删除或改名。
RDS MySQL无法连接。
出现该错误时,请首先检查表名是否存在,然后确认PolarDB-X后端所有RDS MySQL状态是否正常。
如果确定表名被人为删除或改名,可以通过RDS MySQL的数据恢复功能修复。如果仍无法修复,请联系客服或提工单解决此问题。
TDDL-4100 ERR_ATOM_NOT_AVALILABLE
PolarDB-X后端RDS MySQL暂时不可用。
示例:
ERR-CODE:[TDDL-4100][ERR_ATOM_NOT_AVALILABLE]Atom:*****isNotAvailable
如果PolarDB-X探测到后端某个RDS MySQL实例状态异常,会临时阻止访问该实例并提示TDDL-4100错误。当遇到该错误,请检查PolarDB-X后端所有RDS MySQL是否异常,并尝试进行恢复。
当RDS MySQL实例从异常状态恢复后,PolarDB-X将自动解除不可用状态,恢复应用正常访问。
TDDL-4101 ERR_ATOM_GET_CONNECTION_FAILED_UNKNOWN_REASON
未知原因的PolarDB-X后端连接获取失败。
示例:
ERR-CODE:[TDDL-4101][ERR_ATOM_GET_CONNECTION_FAILED_UNKNOWN_REASON]Get
connectionfordb'*****'frompool failed.AppName:*****,Env:*****,
UnitName:null.Messagefrompool:wait millis5000,active0,maxActive5.
Youshould lookforthe following logs which contains the real reason.
PolarDB-X在处理请求时会向后端RDS MySQL异步创建连接。如果无法在等待时间内完成RDS MySQL连接创建,而异步任务又尚未返回错误原因,PolarDB-X会向应用返回TDDL-4101错误。
该错误通常是由后端RDS MySQL异常导致的。如果排除RDS MySQL问题后仍然出现该错误,请联系客服或提工单。
TDDL-4102 ERR_ATOM_GET_CONNECTION_FAILED_KNOWN_REASON
已知原因的PolarDB-X后端连接获取失败。
示例:
ERR-CODE:[TDDL-4102][ERR_ATOM_GET_CONNECTION_FAILED_KNOWN_REASON]Get
connectionfordb'*****'failed because wait millis5000,active0,
maxActive5
PolarDB-X获取后端RDS MySQL连接时出错,错误原因已经在ERR-CODE:消息中给出。
常见PolarDB-X后端连接失败的原因如下:
后端RDS MySQL连接数已满
RDS MySQL连接超时
RDS MySQL拒绝连接
如果排除后端RDS MySQL问题后仍然出现该错误,请联系客服或提工单。
TDDL-4103 ERR_ATOM_CONNECTION_POOL_FULL
PolarDB-X后端RDS MySQL连接池已满。
示例:
ERR-CODE:[TDDL-4103][ERR_ATOM_CONNECTION_POOL_FULL]Poolof DB'*****'is
full.Messagefrompool:wait millis5000,active5,maxActive5.
AppName:*****,Env:*****,UnitName:null.
该错误表示PolarDB-X后端连接池已满。导致TDDL-4103错误的常见原因如下:
应用SQL语句执行比较慢,占用单个连接的时间过长,导致连接数不够。
应用端没有关闭数据库连接,导致连接泄露。
有很多跨库查询(例如聚合统计类查询,未带分库条件的查询)同时执行,占用大量连接。
解决方法建议如下:
尽量使用框架访问数据库,如Spring JDBC、MyBatis等。
按RDS性能分析报告与DBA建议优化业务SQL语句。
使用PolarDB-X读写分离将跨库查询转发至读库处理。
升级更高规格的RDS实例,提升后端处理能力。
联系客服或提工单调整PolarDB-X后端连接数。
TDDL-4104 ERR_ATOM_CREATE_CONNECTION_TOO_SLOW
PolarDB-X后端RDS MySQL连接创建太慢。
示例:
ERR-CODE:[TDDL-4104][ERR_ATOM_CREATE_CONNECTION_TOO_SLOW]Getconnection
fordb'*****'frompool timeout.AppName:*****,Env:*****,UnitName:null.
Messagefrompool:wait millis5000,active3,maxActive5.
PolarDB-X向后端RDS MySQL异步创建连接时,如果在短时间创建大量连接,或者RDS MySQL建立连接速度太慢,会出现等待超时。
该问题通常是由后端RDS MySQL压力过大或异常导致的,建议使用PolarDB-X读写分离,或者升级更高规格的RDS实例,减轻后端处理压力。
如果排除RDS MySQL问题后仍然出现该错误,请联系客服或提工单。
如果问题是由短时间创建大量连接导致,考虑联系客服或提工单调整PolarDB-X最小连接数。
TDDL-4105 ERR_ATOM_ACCESS_DENIED
PolarDB-X后端RDS MySQL拒绝创建连接。
示例:
ERR-CODE:[TDDL-4105][ERR_ATOM_ACCESS_DENIED]DB'*****'Accessdeniedfor
user'*****'@'*****'.AppName:*****,Env:*****,UnitName:null.Please
contact DBA to check.
该错误表明PolarDB-X通过用户名和密码连接RDS MySQL时被拒绝访问。
如果不小心在后端RDS MySQL上修改了由PolarDB-X自动创建的用户名或密码,就会导致PolarDB-X提示TDDL-4105错误。修复该问题需要手工订正PolarDB-X的用户名或密码,请联系客服或提工单进行修改。
此外,后端RDS实例欠费或到期后会拒绝所有访问请求,也导致PolarDB-X产生TDDL-4105错误。如果遇到这种情况,请及时给RDS实例续费。
TDDL-4106 ERR_ATOM_DB_DOWN
PolarDB-X后端RDS MySQL无法连接。
示例:
ERR-CODE:[TDDL-4106][ERR_ATOM_DB_DOWN]DB'*****'cannot be connected.
AppName:*****,Env:*****,UnitName:null.Itseems a very real possibility
thatthisDB IS DOWN.Pleasecontact DBA to check.
该错误表示PolarDB-X向后端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''tsettonullfornow;
有些MySQL变量(variable)不允许用SET var = x语句设置成NULL值。遇到这种情况,PolarDB-X会提示TDDL-4108错误。
如果遇到该错误,请检查传递的变量(variable)值,并按照MySQL官方文档改正,详情请参见MySQ