管理者によるDDLのキャンセル
ADMIN CANCEL DDL文は実行中のDDLジョブをキャンセルします。3 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待機キューから削除されたことを示します。
概要
- AdminCancelDDLStmt
- NumList
AdminCancelDDLStmt ::=
'ADMIN' 'CANCEL' 'DDL' 'JOBS' NumList
NumList ::=
Int64Num ( ',' Int64Num )*
例
現在実行中の DDL ジョブをキャンセルし、対応するジョブが正常にキャンセルされたかどうかを返すには、 ADMIN CANCEL DDL JOBS使用します。
ADMIN CANCEL DDL JOBS job_id [, job_id] ...;
ジョブをキャンセルする操作が失敗した場合、具体的な理由が表示されます。
注記:
- バージョン6.2.0より前では、この操作のみがDDLジョブをキャンセルでき、他のすべての操作や環境変更(マシンの再起動やクラスタの再起動など)ではこれらのジョブをキャンセルできませんでした。バージョン6.2.0以降では、
KILLステートメントを使用して実行中のDDLジョブを強制終了することでキャンセルできるようになりました。- この操作では、複数のDDLジョブを同時にキャンセルできます。1 ステートメントを使用して、
ADMIN SHOW DDL JOBSジョブのIDを取得できます。- キャンセルするジョブが完了している場合、キャンセル操作は失敗します。
MySQLの互換性
このステートメントは、MySQL 構文に対する TiDB 拡張です。