From 48af8021106672d44d5eb37074c1d57b65f77c96 Mon Sep 17 00:00:00 2001 From: Zejun Li Date: Tue, 19 May 2020 13:36:50 +0800 Subject: [PATCH 1/2] Update error-codes.md --- error-codes.md | 205 +++++++++++++++++++++---------------------------- 1 file changed, 89 insertions(+), 116 deletions(-) diff --git a/error-codes.md b/error-codes.md index bc5823ea50cc..9f927d0a8c1e 100644 --- a/error-codes.md +++ b/error-codes.md @@ -104,315 +104,288 @@ TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样 字段无法获取到默认值。一般作为内部错误使用,转换成其他具体错误类型后,返回给应用程序。 -* Error Number: 8039 +* Error Number: 8040 - 索引的偏移量超出范围 + 尝试进行不支持的操作,比如在 View 和 Sequence 上进行 lock table。 * Error Number: 8042 - 表结构的状态为不存在 + 表结构的状态为不存在。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8043 - 列信息的状态为不存在 + 列信息的状态为不存在。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8044 - 索引的状态为不存在 + 索引的状态为不存在。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8045 - 非法的表数据 + 非法的表数据。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8046 - 列信息的状态为不可见 + 列信息的状态为不可见。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8047 - 设置了不支持的系统变量值,通常在用户设置了数据库不支持的变量值后的告警信息里出现 + 设置了不支持的系统变量值,通常在用户设置了数据库不支持的变量值后的告警信息里出现。 * Error Number: 8048 - 设置了不支持的数据库隔离级别 + 设置了不支持的隔离级别,如果是使用第三方工具或框架等无法修改代码进行适配的情况,可以考虑通过 `tidb_skip_isolation_level_check` + 来绕过这一检查。 -* Error Number: 8049 + {{< copyable "sql" >}} - 载入权限相关表失败 + ```sql + set @@tidb_skip_isolation_level_check = 1; + ``` * Error Number: 8050 - 设置了不支持的权限类型 + 设置了不支持的权限类型,遇到该错误请参考[TiDB 权限说明](/privilege-management.md#tidb-各操作需要的权限)进行调整。 * Error Number: 8051 - 未知的字段类型 + TiDB 在解析客户端发送的 Exec 参数列表时遇到了未知的数据类型。如果遇到这个错误,请检查客户端是否正常,如果客户端正常请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8052 - 来自客户端的数据包的序列号错误 + 来自客户端的数据包的序列号错误。如果遇到这个错误,请检查客户端是否正常,如果客户端正常请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8053 - 获取到了非法的自增列值 + 获取到了非法的自增列值。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8055 - 当前快照过旧,数据可能已经被 GC + 当前快照过旧,数据可能已经被 GC。可以调大 `tikv_gc_life_time` 的值来避免该问题。新版本的 TiDB 会自动为长时间运行的事务保留数据,一般不会遇到该错误。 + 有关 GC 的介绍和配置可以参考 [GC 机制简介](/garbage-collection-overview.md)和 [GC 配置](/garbage-collection-configuration.md)文档。 -* Error Number: 8056 + {{< copyable "sql" >}} - 非法的表 ID + ```sql + update mysql.tidb set VARIABLE_VALUE="24h" where VARIABLE_NAME="tikv_gc_life_time"; + ``` -* Error Number: 8057 +* Error Number: 8056 - 非法的字段类型 + 非法的表 ID。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 -* Error Number: 8058 +* Error Number: 8057 - 申请了不存在的自动变量类型 + 在向客户端传输数据时遇到了无法识别的类型。如果遇到该错误请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8059 - 获取自动随机量失败 + 自动随机量可用次数用尽无法进行分配。当前没有恢复这类错误的方法。建议在使用 auto random 功能时使用 bigint 以获取最大的可分配次数, + 并尽量避免手动给 auto random 列赋值。相关的介绍和使用建议可以参考 [auto random 功能文档](/auto-random.md)。 * Error Number: 8060 - 非法的自增列偏移量 + 非法的自增列偏移量。请检查 `auto_increment_increment` 和 `auto_increment_offset` 的取值是否符合要求。 * Error Number: 8061 - 不支持的 SQL Hint + 不支持的 SQL Hint。请参考 [Optimizer Hints](/optimizer-hints.md) 检查和修正 SQL Hint。 * Error Number: 8062 - SQL Hint 中使用了非法的 token,与 Hint 的保留字冲突 + SQL Hint 中使用了非法的 token,与 Hint 的保留字冲突。请参考 [Optimizer Hints](/optimizer-hints.md) 检查和修正 SQL Hint。 * Error Number: 8063 - SQL Hint 中限制内存使用量超过系统设置的上限,设置被忽略 + SQL Hint 中限制内存使用量超过系统设置的上限,设置被忽略。请参考 [Optimizer Hints](/optimizer-hints.md) 检查和修正 SQL Hint。 * Error Number: 8064 - 解析 SQL Hint 失败 + 解析 SQL Hint 失败。请参考 [Optimizer Hints](/optimizer-hints.md) 检查和修正 SQL Hint。 * Error Number: 8065 - SQL Hint 中使用了非法的整数 + SQL Hint 中使用了非法的整数。请参考 [Optimizer Hints](/optimizer-hints.md) 检查和修正 SQL Hint。 * Error Number: 8066 - JSON_OBJECTAGG 函数的第二个参数是非法参数 + JSON_OBJECTAGG 函数的第二个参数是非法参数。 * Error Number: 8101 - 插件 ID 格式错误,正确的格式是 `[name]-[version]` 并且 name 和 version 中不能带有 '-' + 插件 ID 格式错误,正确的格式是 `[name]-[version]` 并且 name 和 version 中不能带有 '-'。 * Error Number: 8102 - 无法读取插件定义信息 + 无法读取插件定义信息。请检查插件相关的配置。 * Error Number: 8103 - 插件名称错误 + 插件名称错误,请检查插件的配置。 * Error Number: 8104 - 插件版本不匹配 + 插件版本不匹配,请检查插件的配置。 * Error Number: 8105 - 插件被重复载入 + 插件被重复载入。 * Error Number: 8106 - 插件定义的系统变量名称没有以插件名作为开头 + 插件定义的系统变量名称没有以插件名作为开头,请联系插件的开发者进行修复。 * Error Number: 8107 - 载入的插件未指定版本或指定的版本过低 + 载入的插件未指定版本或指定的版本过低,请检查插件的配置。 * Error Number: 8108 - 不支持的执行计划类型 + 不支持的执行计划类型。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8109 - analyze 索引时找不到指定的索引 + analyze 索引时找不到指定的索引。 * Error Number: 8110 - 不能进行笛卡尔积运算,需要将配置文件里的 `cross-join` 设置为 `true` + 不能进行笛卡尔积运算,需要将配置文件里的 `cross-join` 设置为 `true`。 * Error Number: 8111 - execute 语句执行时找不到对应的 prepare 语句 + execute 语句执行时找不到对应的 prepare 语句。 * Error Number: 8112 - execute 语句的参数个数与 prepare 语句不符合 + execute 语句的参数个数与 prepare 语句不符合。 * Error Number: 8113 - execute 语句涉及的表结构在 prepare 语句执行后发生了变化 + execute 语句涉及的表结构在 prepare 语句执行后发生了变化。 * Error Number: 8114 - 未知的执行计划类型 + 未知的执行计划类型。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8115 - 不支持 prepare 多行语句 + 不支持 prepare 多行语句。 * Error Number: 8116 - 不支持 prepare DDL 语句 + 不支持 prepare DDL 语句。 * Error Number: 8118 - 构建执行器失败 + 构建执行器失败。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8120 - 获取不到事务的 start tso + 获取不到事务的 start tso,请检查 PD Server 状态/监控/日志以及 TiDB Server 与 PD Server 之间的网络。 * Error Number: 8121 - 权限检查失败 + 权限检查失败,请检查数据库的权限配置。 * Error Number: 8122 - 指定了通配符,但是找不到对应的表名 + 指定了通配符,但是找不到对应的表名。 * Error Number: 8123 - 带聚合函数的 SQL 中返回非聚合的列,违反了 only_full_group_by 模式 + 带聚合函数的 SQL 中返回非聚合的列,违反了 `only_full_group_by` 模式。请修改 SQL 或者考虑关闭 `only_full_group_by` 模式。 * Error Number: 8200 - 尚不支持的 DDL 语法 - -* Error Number: 8201 - - 当前 TiDB 不是 DDL owner - -* Error Number: 8202 - - 不能对该索引解码 - -* Error Number: 8203 - - 非法的 DDL worker - -* Error Number: 8204 - - 非法的 DDL job - -* Error Number: 8205 - - 非法的 DDL job 标志 - -* Error Number: 8206 - - DDL 的 Reorg 阶段执行超时 - -* Error Number: 8207 - - 非法的存储节点 - -* Error Number: 8210 - - 非法的 DDL 状态 - -* Error Number: 8211 - - DDL 的 Reorg 阶段发生了 panic - -* Error Number: 8212 - - 非法的 region 切分范围 - -* Error Number: 8213 - - 非法的 DDL job 版本 + 尚不支持的 DDL 语法。请参考 [与 MySQL DDL 的兼容性](/mysql-compatibility.md#ddl)。 * Error Number: 8214 - DDL 操作被终止 + DDL 操作被 admin cancel 操作终止。 * Error Number: 8215 - Admin Repair 表失败 + Admin Repair 表失败,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8216 - 非法的自动随机列 + 自动随机列使用的方法不正确,请参考 [auto random 功能文档](/auto-random.md)进行修改。 * Error Number: 8221 - Key 编码错误 + Key 编码错误。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8222 - 索引 Key 编码错误 + 索引 Key 编码错误。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8223 - 检测出数据与索引不一致的错误 + 检测出数据与索引不一致的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 * Error Number: 8224 - 找不到 DDL job + 找不到 DDL job,请检查 restore 操作指定的 job id 是否存在。 * Error Number: 8225 - DDL 已经完成,无法被取消 + DDL 已经完成,无法被取消。 * Error Number: 8226 - DDL 几乎要完成了,无法被取消 + DDL 几乎要完成了,无法被取消。 * Error Number: 8227 - 创建 Sequence 时使用了不支持的选项 + 创建 Sequence 时使用了不支持的选项,支持的选项的列表可以参考 [Sequence 使用文档](sql-statements/sql-statement-create-sequence.md#参数说明)。 + +* Error Number: 8228 + + 在 Sequence 上使用 `setval` 时指定了不支持的类型,该函数的示例可以在 [Sequence 使用文档](sql-statements/sql-statement-create-sequence.md#示例)中找到。 * Error Number: 8229 - 事务超过存活时间 + 事务超过存活时间,遇到该问题可以提交或者回滚当前事务,开启一个新事务。 - 提交或者回滚当前事务,开启一个新事务 +* Error Number: 8230 + + TiDB 目前不支持在新添加的列上使用 Sequence 作为默认值,如果尝试进行这类操作会返回该错误。 * Error Number: 9001 - 请求 PD 超时,请检查 PD Server 状态/监控/日志以及 TiDB Server 与 PD Server 之间的网络 + 请求 PD 超时,请检查 PD Server 状态/监控/日志以及 TiDB Server 与 PD Server 之间的网络。 * Error Number: 9002 - 请求 TiKV 超时,请检查 TiKV Server 状态/监控/日志以及 TiDB Server 与 TiKV Server 之间的网络 + 请求 TiKV 超时,请检查 TiKV Server 状态/监控/日志以及 TiDB Server 与 TiKV Server 之间的网络。 * Error Number: 9003 - TiKV 操作繁忙,一般出现在数据库负载比较高时,请检查 TiKV Server 状态/监控/日志 + TiKV 操作繁忙,一般出现在数据库负载比较高时,请检查 TiKV Server 状态/监控/日志。 * Error Number: 9004 - 当数据库上承载的业务存在大量的事务冲突时,会遇到这种错误,请检查业务代码 + 当数据库上承载的业务存在大量的事务冲突时,会遇到这种错误,请检查业务代码。 * Error Number: 9005 - 某个 Raft Group 不可用,如副本数目不足,出现在 TiKV 比较繁忙或者是 TiKV 节点停机的时候,请检查 TiKV Server 状态/监控/日志 + 某个 Raft Group 不可用,如副本数目不足,出现在 TiKV 比较繁忙或者是 TiKV 节点停机的时候,请检查 TiKV Server 状态/监控/日志。 * Error Number: 9006 - GC Life Time 间隔时间过短,长事务本应读到的数据可能被清理了,应增加 GC Life Time + GC Life Time 间隔时间过短,长事务本应读到的数据可能被清理了,应增加 GC Life Time。 * Error Number: 9007 - 事务在 TiKV 中遇到了写入冲突,原因及解决方法请参考[这里](/faq/tidb-faq.md#九故障排除) + 事务在 TiKV 中遇到了写入冲突,原因及解决方法请参考[这里](/faq/tidb-faq.md#九故障排除)。 * Error Number: 9008 - 同时向 TiKV 发送的请求过多,超过了限制 + 同时向 TiKV 发送的请求过多,超过了限制。请调大 `tidb_store_limit` 或将其设置为 `0` 来取消对请求流量的限制。 + +* Error Number: 9010 + + TiKV 无法处理这条 raft log,请检查 TiKV Server 状态/监控/日志。 ## 故障诊断 From 3163b6229a3229a576ef7af7a2d0e4ae94da834e Mon Sep 17 00:00:00 2001 From: Zejun Li Date: Thu, 21 May 2020 13:42:17 +0800 Subject: [PATCH 2/2] remove internal errors and add a note for them --- error-codes.md | 58 +++++++------------------------------------------- 1 file changed, 8 insertions(+), 50 deletions(-) diff --git a/error-codes.md b/error-codes.md index 9f927d0a8c1e..77dba0744667 100644 --- a/error-codes.md +++ b/error-codes.md @@ -12,6 +12,12 @@ aliases: ['/docs-cn/dev/reference/error-codes/'] TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样的错误码。关于 MySQL 的错误码列表,详见 [Server Error Message Reference](https://dev.mysql.com/doc/refman/5.7/en/server-error-reference.html)。另外还有一些 TiDB 特有的错误码: +> **注意:** +> +> 有一部分错误码属于内部错误,正常情况下 TiDB 会自行处理不会直接返回给用户,故没有在此列出。 +> +> 如果您遇到了这里没有列出的错误码,请向 PingCAP 工程师或通过官方论坛寻求帮助。 + * Error Number: 8001 请求使用的内存超过 TiDB 内存使用的阈值限制。出现这种错误,可以通过调整 `mem-quota-query` 来增大单个 SQL 使用的内存上限。 @@ -108,26 +114,6 @@ TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样 尝试进行不支持的操作,比如在 View 和 Sequence 上进行 lock table。 -* Error Number: 8042 - - 表结构的状态为不存在。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 - -* Error Number: 8043 - - 列信息的状态为不存在。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 - -* Error Number: 8044 - - 索引的状态为不存在。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 - -* Error Number: 8045 - - 非法的表数据。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 - -* Error Number: 8046 - - 列信息的状态为不可见。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 - * Error Number: 8047 设置了不支持的系统变量值,通常在用户设置了数据库不支持的变量值后的告警信息里出现。 @@ -155,10 +141,6 @@ TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样 来自客户端的数据包的序列号错误。如果遇到这个错误,请检查客户端是否正常,如果客户端正常请向 PingCAP 工程师或通过官方论坛寻求帮助。 -* Error Number: 8053 - - 获取到了非法的自增列值。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 - * Error Number: 8055 当前快照过旧,数据可能已经被 GC。可以调大 `tikv_gc_life_time` 的值来避免该问题。新版本的 TiDB 会自动为长时间运行的事务保留数据,一般不会遇到该错误。 @@ -170,14 +152,6 @@ TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样 update mysql.tidb set VARIABLE_VALUE="24h" where VARIABLE_NAME="tikv_gc_life_time"; ``` -* Error Number: 8056 - - 非法的表 ID。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 - -* Error Number: 8057 - - 在向客户端传输数据时遇到了无法识别的类型。如果遇到该错误请向 PingCAP 工程师或通过官方论坛寻求帮助。 - * Error Number: 8059 自动随机量可用次数用尽无法进行分配。当前没有恢复这类错误的方法。建议在使用 auto random 功能时使用 bigint 以获取最大的可分配次数, @@ -263,10 +237,6 @@ TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样 execute 语句涉及的表结构在 prepare 语句执行后发生了变化。 -* Error Number: 8114 - - 未知的执行计划类型。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 - * Error Number: 8115 不支持 prepare 多行语句。 @@ -275,10 +245,6 @@ TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样 不支持 prepare DDL 语句。 -* Error Number: 8118 - - 构建执行器失败。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 - * Error Number: 8120 获取不到事务的 start tso,请检查 PD Server 状态/监控/日志以及 TiDB Server 与 PD Server 之间的网络。 @@ -311,14 +277,6 @@ TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样 自动随机列使用的方法不正确,请参考 [auto random 功能文档](/auto-random.md)进行修改。 -* Error Number: 8221 - - Key 编码错误。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 - -* Error Number: 8222 - - 索引 Key 编码错误。该错误为内部处理的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 - * Error Number: 8223 检测出数据与索引不一致的错误,如果遇到该报错请向 PingCAP 工程师或通过官方论坛寻求帮助。 @@ -337,11 +295,11 @@ TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样 * Error Number: 8227 - 创建 Sequence 时使用了不支持的选项,支持的选项的列表可以参考 [Sequence 使用文档](sql-statements/sql-statement-create-sequence.md#参数说明)。 + 创建 Sequence 时使用了不支持的选项,支持的选项的列表可以参考 [Sequence 使用文档](/sql-statements/sql-statement-create-sequence.md#参数说明)。 * Error Number: 8228 - 在 Sequence 上使用 `setval` 时指定了不支持的类型,该函数的示例可以在 [Sequence 使用文档](sql-statements/sql-statement-create-sequence.md#示例)中找到。 + 在 Sequence 上使用 `setval` 时指定了不支持的类型,该函数的示例可以在 [Sequence 使用文档](/sql-statements/sql-statement-create-sequence.md#示例)中找到。 * Error Number: 8229