結論
Online DDLできない制約にひっかかってた
InnoDB tables created before MySQL 5.6 do not support ALTER TABLE ... ALGORITHM=INPLACE for tables that include temporal columns (DATE, DATETIME or TIMESTAMP) and have not been rebuilt using ALTER TABLE ... ALGORITHM=COPY. In this case, an ALTER TABLE ... ALGORITHM=INPLACE operation returns the following error:
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported.
Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
意訳
- 5.6より前に作ったテーブル
-
DATE
DATETIME
TIMESTAMP
カラムが存在する -
ALGORITHM=COPY
でrebuildされていない (5.6にしてから一度もALTER TABLE
していない)
-
- は
ALGORITHM=INPLACE
できない - 言い換えれば、
ALGORITHM=COPY
が必須であり、書込ロックがかかるLOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED.
メモ
-
ALTER TABLE table_name ... LOCK=NONE
とすれば、Online DDLできないときはエラー出るので確認に有用 - MySQL 5.5から移行した理由が、Online DDLしたかったからなのに出来ないジレンマ \(^o^)/
-
ALGORITHM=COPY
でALTER TABLE
すれば、次回からはOnline DDLできる