管理者が DDL をキャンセル
ADMIN CANCEL DDL
ステートメントを使用すると、実行中の DDL ジョブをキャンセルできます。 job_id
ADMIN SHOW DDL JOBS
を実行すると見つかります。
ADMIN CANCEL DDL
ステートメントを使用すると、コミットされたがまだ実行が完了していない DDL ジョブをキャンセルすることもできます。キャンセル後、DDL ジョブを実行する SQL ステートメントはERROR 8214 (HY000): Cancelled DDL job
エラーを返します。すでに完了した DDL ジョブをキャンセルすると、 RESULT
列にDDL Job:90 not found
エラーが表示されます。これは、ジョブが DDL 待機キューから削除されたことを示します。
あらすじ
- AdminStmt
- NumList
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 )*
例
現在実行中の DDL ジョブをキャンセルし、対応するジョブが正常にキャンセルされたかどうかを返すには、 ADMIN CANCEL DDL JOBS
を使用します。
ADMIN CANCEL DDL JOBS job_id [, job_id] ...;
操作がジョブのキャンセルに失敗した場合は、特定の理由が表示されます。
ノート:
- DDL ジョブをキャンセルできるのはこの操作のみです。他のすべての操作や環境の変更 (マシンの再起動やクラスターの再起動など) では、これらのジョブをキャンセルすることはできません。
- この操作により、複数の DDL ジョブを同時にキャンセルできます。
ADMIN SHOW DDL JOBS
ステートメントを使用して DDL ジョブの ID を取得できます。- キャンセルしたいジョブが終了している場合、キャンセル操作は失敗します。
MySQLの互換性
このステートメントは、MySQL 構文に対する TiDB 拡張機能です。