本文为您介绍迁移 MySQL 数据库的数据至 OceanBase 数据库 MySQL 租户时,ALTER TABLE DDL 有关约束/索引操作同步支持的范围。
总览
alter_option: {
ADD {INDEX | KEY} [index_name]
[index_type] (key_part,...) [index_option] ...
| ADD {FULLTEXT | SPATIAL} [INDEX | KEY] [index_name]
(key_part,...) [index_option] ...
| ADD [CONSTRAINT [symbol]] PRIMARY KEY
[index_type] (key_part,...)
[index_option] ...
| ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]
[index_name] [index_type] (key_part,...)
[index_option] ...
| ADD [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (col_name,...)
reference_definition
| ADD [CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED]
| DROP {CHECK | CONSTRAINT} symbol
| ALTER {CHECK | CONSTRAINT} symbol [NOT] ENFORCED
| ALTER INDEX index_name {VISIBLE | INVISIBLE}
| {DISABLE | ENABLE} KEYS
| DROP {INDEX | KEY} index_name
| DROP PRIMARY KEY
| DROP FOREIGN KEY fk_symbol
| RENAME {INDEX | KEY} old_index_name TO new_index_name
}
key_part: {col_name [(length)] | (expr)} [ASC | DESC]
index_type:
USING {BTREE | HASH}
index_option: {
KEY_BLOCK_SIZE [=] value
| index_type
| WITH PARSER parser_name
| COMMENT 'string'
| {VISIBLE | INVISIBLE}
}
支持的范围
支持创建普通索引:
ADD INDEX / KEY支持删除索引:
DROP INDEX支持创建全文索引:
ADD FULLTEXT INDEX / KEY支持创建唯一索引:
ADD UNIQUE INDEX / KEY支持创建外键 ADD:
FOREIGN KEY支持删除主键约束:
DROP PRIMARY KEY重要仅 OceanBase 数据库 4.0.0 及以上版本支持。
不支持的范围
如果同步的 DDL 包含以下不支持的定义,则整个建表语句会转换失败(输出空)。
UNIQUE KEY、INDEX / KEY、FULLTEXT INDEX 不支持函数索引,仅支持索引创建在字段上。
不支持
ADD SPATIAL INDEX。不支持
ADD PRIMARY KEY。不支持
ALTER TABLE DISABLE | ENABLE KEYS。不支持
FOREIGN KEY指定ON [DELETE | UPDATE] SET NULL属性。OceanBase 数据库 MySQL 租户 3.2.3 以下版本,不支持下述操作:
不支持
ADD CHECK。不支持
DROP CHECK。不支持
ALTER CHECK [NOT] ENFORCED。不支持
ALTER INDEX VISIBLE | INVISIBLE。不支持
RENAME INDEX / KEY。ALTER TABLE t rename KEY k TO kk; ALTER TABLE T RENAME INDEX b TO w;
忽略的属性
如果同步的 DDL 包含以下不支持的定义,则这些属性将不会被解析和转换,最终会被忽略。
指定
USING BTREE或USING HASH。index option中指定KEY_BLOCK_SIZE、index_type、WITH PARSER、COMMENT、VISIBLE | INVISIBLE、ENGINE_ATTRIBUTE和SECONDARY_ENGINE_ATTRIBUTE属性。CHECK 约束中指定
[NOT] ENFORCED属性。FOREIGN KEY指定MATCH FULL | MATCH PARTIAL | MATCH SIMPLE属性。
使用限制
由于 OceanBase 数据库 MySQL 租户本身的限制,如果存在以下场景,同步的 DDL 被成功转换后,执行到 OceanBase 数据库 MySQL 租户可能会报错。
OceanBase 数据库 MySQL 租户不支持 PRIMARY KEY、UNIQUE KEY、INDEX / KEY、FULLTEXT INDEX、FOREIGN KEY 创建在某些类型的字段上。
OceanBase 数据库 MySQL 租户不支持 CHECK 约束中的某些函数/表达式。
OceanBase 数据库 MySQL 租户不支持 FOREIGN KEY 约束中的某些函数/表达式。