このトピックでは、MySQL データベースで実行された ALTER TABLE DDL 操作がデータ転送サービスの DDL 同期コンポーネントによって変換できるものの、MySQL データベースから OceanBase Database の MySQL テナントへのデータ移行中に OceanBase Database の MySQL テナントでは実行できないシナリオについて説明します。
行 CHECK 式での他の列の参照
MySQL データベース
ALTER TABLE ADD COLUMN文を実行する場合、行CHECK式で他の列(どの型でも)を参照することはできません。ALTER TABLE MODIFY/CHANGE COLUMN文を実行する場合、行CHECK式で他の列(どの型でも)を参照できます。
OceanBase Database の MySQL テナント
ALTER TABLE ADD COLUMN文を実行する場合、行CHECK式で他の列(どの型でも)を参照することはできません。ALTER TABLE MODIFY/CHANGE COLUMN文を実行する場合、行CHECK式で他の列(どの型でも)を参照することはできません。重要OceanBase Database の MySQL テナントの制限により、他の CHECK 式はサポートされない場合があります。
列の型の変更
MySQL データベースと OceanBase Database の MySQL テナントでは、変更後の制約付き列の型に異なる制限があります。詳細については、「制約付き列の型を変更する」をご参照ください。
MySQL データベースと OceanBase Database の MySQL テナントでは、制約のない列の型に異なる制限があります。詳細については、「制約のない列の型を変更する」をご参照ください。
列の長さの変更
MySQL データベースと OceanBase Database の MySQL テナントでは、変更後の制約付き列の長さに異なる制限があります。詳細については、「制約付き列の長さを変更する」をご参照ください。
MySQL データベースと OceanBase Database の MySQL テナントでは、変更後の制約のない列の長さに異なる制限があります。詳細については、「制約のない列の長さを変更する」をご参照ください。
NULLABLE 列を NOT NULL 列に変更する
MySQL データベース
NULLABLE 列に制約がない場合、CHANGE/MODIFY COLUMN 文を実行して NULLABLE 列を NOT NULL 列に変更できます。NOT NULL -> NULLABLE、NULLABLE -> NULLABLE、NOT NULL -> NOT NULL の変更もサポートされています。
重要NULLABLE 列に NULL 値が存在する場合、NULLABLE 列を NOT NULL 列に変更することはできません。
OceanBase Database の MySQL テナント
NULLABLE 列に制約がない場合、CHANGE/MODIFY COLUMN 文を実行して NULLABLE 列を NOT NULL 列に変更することはできません。
NULLABLE 列に制約がない場合、NOT NULL -> NULLABLE、NULLABLE -> NULLABLE、NOT NULL -> NOT NULL の変更がサポートされています。
文字セットまたは照合順序の変更
MySQL データベース:サポートされています。
OceanBase Database の MySQL テナント:サポートされていません。
制約付き列の削除
MySQL データベースと OceanBase Database の MySQL テナントでは、制約付き列の削除に関して異なる制限があります。詳細については、「制約付き列を削除する」をご参照ください。
CHANGE/MODIFY COLUMN NOT NULL 文と COMMENT 文は同時に存在できない
サンプルコード:
ALTER TABLE T MODIFY C INT NOT NULL, COMMENT 'INT COLUMN';MySQL データベース
列に制約がない場合、COMMENT 句を含む CHANGE/MODIFY COLUMN 文を実行して、列を NOT NULL または NULLABLE 列に変更できます。
列に PRIMARY KEY、UNIQUE KEY、KEY、または FULLTEXT 制約がある場合、COMMENT 句を含む CHANGE/MODIFY COLUMN 文を実行して、列を NOT NULL 列に変更できます。ただし、この場合に列を NULLABLE 列に変更すると、エラーが返されます。
OceanBase Database の MySQL テナント
NULLABLE 列または NOT NULL 列に制約があるかどうかに関係なく、COMMENT 句を含む CHANGE/MODIFY COLUMN 文を実行して NOT NULL 列に変更することはできません。
NULLABLE 列または NOT NULL 列に制約がない場合、NULLABLE 列に変更できます。
NOT NULL 列に PRIMARY KEY、UNIQUE KEY、KEY、または FULLTEXT 制約があり、COMMENT 句を含む CHANGE/MODIFY COLUMN 文を実行して列を NULLABLE 列に変更する場合、エラーは返されませんが、変更は有効になりません。