Skip to content

Latest commit

 

History

History
46 lines (30 loc) · 2.23 KB

sql-statement-admin-cancel-ddl.md

File metadata and controls

46 lines (30 loc) · 2.23 KB
title summary
ADMIN CANCEL DDL
TiDB 数据库中 ADMIN CANCEL DDL 的使用概况。

ADMIN CANCEL DDL

ADMIN CANCEL DDL 语句用于取消当前正在运行的 DDL 作业。可以通过 ADMIN SHOW DDL JOBS 语句获取 DDL 作业的 job_id

用于取消已经提交但未执行完成的 DDL 任务。取消完成后,执行 DDL 任务的 SQL 语句会返回 ERROR 8214 (HY000): Cancelled DDL job 的错误。取消一个已经执行完成的 DDL 任务会在 RESULT 列看到 DDL Job:90 not found 的错误,表示该任务已从 DDL 等待队列中被移除。

语法图

AdminStmt ::=
    'ADMIN' ( 'SHOW' ( 'DDL' ( 'JOBS' Int64Num? WhereClauseOptional | 'JOB' 'QUERIES' NumList )? | TableName 'NEXT_ROW_ID' | 'SLOW' AdminShowSlow ) | 'CHECK' ( 'TABLE' TableNameList | 'INDEX' TableName Identifier ( HandleRange ( ',' HandleRange )* )? ) | 'RECOVER' 'INDEX' TableName Identifier | 'CLEANUP' ( 'INDEX' TableName Identifier | 'TABLE' 'LOCK' TableNameList ) | 'CHECKSUM' 'TABLE' TableNameList | 'CANCEL' 'DDL' 'JOBS' NumList | 'RELOAD' ( 'EXPR_PUSHDOWN_BLACKLIST' | 'OPT_RULE_BLACKLIST' | 'BINDINGS' ) | 'PLUGINS' ( 'ENABLE' | 'DISABLE' ) PluginNameList | 'REPAIR' 'TABLE' TableName CreateTableStmt | ( 'FLUSH' | 'CAPTURE' | 'EVOLVE' ) 'BINDINGS' )

NumList ::=
    Int64Num ( ',' Int64Num )*

示例

可以通过 ADMIN CANCEL DDL JOBS 语句取消当前正在运行的 DDL 作业,并返回对应作业是否取消成功:

{{< copyable "sql" >}}

ADMIN CANCEL DDL JOBS job_id [, job_id] ...;

如果取消失败,会显示失败的具体原因。

注意:

  • 只有该操作可以取消 DDL 作业,其他所有的操作和环境变更(例如机器重启、集群重启)都不会取消 DDL 作业。
  • 该操作可以同时取消多个 DDL 作业,可以通过 ADMIN SHOW DDL JOBS 语句来获取 DDL 作业的 job_id
  • 如果希望取消的作业已经执行完毕,取消操作将失败。

MySQL 兼容性

ADMIN CANCEL DDL 语句是 TiDB 对 MySQL 语法的扩展。

另请参阅