このページは機械翻訳したものです。
オンライン DDL 操作の失敗は、通常、次のいずれかの状況が原因です:
ALGORITHM句では、特定のタイプの DDL 操作またはストレージエンジンと互換性のないアルゴリズムを指定します。LOCK句では、特定のタイプの DDL 操作と互換性のない低レベルのロック (SHAREDまたはNONE) を指定します。テーブルでの exclusive lock の待機中にタイムアウトが発生し、DDL 操作の初期フェーズおよび最終フェーズで短時間必要になる場合があります。
tmpdirまたはinnodb_tmpdirファイルシステムのディスク領域が不足していますが、MySQL はインデックスの作成中に一時ソートファイルをディスクに書き込みます。 詳細は、セクション15.12.3「オンライン DDL 領域の要件」を参照してください。操作には時間がかかり、同時 DML は一時オンラインログのサイズが
innodb_online_alter_log_max_size構成オプションの値を超えるようにテーブルを変更します。 この状態はDB_ONLINE_LOG_TOO_BIGエラーの原因になります。同時 DML は、元のテーブル定義では許可されているが、新しいテーブル定義では許可されていないテーブルに変更を加えます。 この操作は、MySQL がいちばん最後に、並列 DML ステートメントからのすべての変更を適用しようとしたときにのみ失敗します。 たとえば、一意のインデックスの作成中にカラムに重複した値を挿入したり、そのカラムでの主キーのインデックスの作成中にカラムに
NULL値を挿入したりすることがあります。 並列 DML によって行われた変更が優先され、ALTER TABLE操作は実質的にロールバックされます。