本文為您介紹遷移 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 約束中的某些函數/運算式。