通过数据库代理地址访问云数据库 MySQL 时,部分请求会在 Proxy 层完成鉴权、路由、连接管理或读写分离处理。若处理失败,Proxy 会向客户端返回对应错误码和消息文本;部分错误则由后端 MySQL 产生并经由 Proxy 原样透传。为便于业务侧识别、告警和容错,本文为您说明数据库代理相关错误码。
说明:
错误码1999是 Proxy 内部错误的统一错误码(PROXY_ERROR_CODE),具体原因需结合返回的消息文本判断。
业务侧如果之前未识别1999,在遇到只读实例被剔除、路由失败等场景时会收到该错误,建议对1999做单独错误处理或重试,避免被当作未知异常导致业务受损。
除下表列出的 Proxy 自身错误码外,其他任意错误码一般为后端 MySQL 返回的 ERR 包,由 Proxy 原样转发(例如 1044/1062/1205/1213 等标准 MySQL 错误),不是数据库代理产生。
错误码总览
错误码 | SQL State | 产生层 | 含义 |
1999 | HY000 | Proxy 自身 | 数据库代理内部错误的统一错误码 (PROXY_ERROR_CODE),具体原因看消息文本。 |
1040 | HY000 | Proxy 自身 | 数据库代理侧连接数达到上限 (Too many connections)。 |
1045 | 28000 / 08S01 | Proxy 自身 | 鉴权失败类(账号密码错误、SSL 要求、握手异常等)。 |
1049 | 42000 | Proxy 自身 | 建连时指定的目标库不存在 (Unknown database '%s')。 |
其他任意错误码 | - | 后端透传 | 后端 MySQL 返回的 ERR 包由 Proxy 原样转发(如1044/1062/1205/1213等标准 MySQL 错误),不是数据库代理产生。 |
错误码1999(Proxy 内部错误)消息明细
以下消息均以
ERROR 1999 (HY000): ... 形式返回客户端。消息文本 | 触发场景 |
Proxy cannot find valid backend server. | 路由失败找不到可用后端(最常见:主库或目标 RO 不可用/未就绪)、Hint 路由失败、重试存储查询失败。 |
Proxy cannot find valid backend server, reroute to ro failed. | 多主/HTAP 场景重路由到只读后端失败。 |
Proxy cannot find valid backend server, reroute failed. | 多主场景查询重路由失败。 |
Proxy cannot find valid backend server for query rerouting. Both AP and TP backends may be unavailable. | AP/TP 后端均不可用。 |
Backend server returned unexpected response, please check backend status. | 后端返回非预期响应。 |
Backend connection not found. | 竞态条件下后端连接丢失。 |
Write backend failed, please check backend db condition. | 事务迁移阶段写后端失败。 |
Proxy can't write backend connection. | 后端连接状态不一致导致写缓冲失败。 |
Proxy cannot keep connection. | 会话切换缓冲异常,连接保持失败。 |
Proxy cannot recover transaction. | 防闪断事务重放写入失败。 |
Proxy internal error, please contact administrator for detail. | 客户端连接注册 epoll 失败(数据库代理内部异常)。 |
Can't find target instance. | 数据库代理命令指定了未知的实例目标。 |
Alter database failed, can't find target instance. | 切换数据库时找不到目标实例。 |
Alter database failed, need one database name. | 切换数据库命令缺少库名。 |
Invalid insert target. | insertstream 过滤器目标非法。 |