全部產品
Search
文件中心

ApsaraDB for OceanBase:修改表 ALTER TABLE 的不相容點

更新時間:Jul 01, 2024

本文為您介紹遷移 MySQL 資料庫的資料至 OceanBase 資料庫 MySQL 租戶時,MySQL 資料庫執行的 ALTER TABLE DDL 支援被資料轉送的 DDL 同步群組件轉換,但 OceanBase 資料庫 MySQL 租戶不支援執行的情境。

行內 CHECK 運算式中引用了其它列

  • MySQL 資料庫

    • 不支援 ALTER TABLE ADD COLUM 行內 CHECK 運算式中引用了其它列(所有類型)。

    • 支援 ALTER TABLE MODIFY/CHANGE COLUM 行內 CHECK 運算式中引用了其它列(所有類型)。

  • OceanBase 資料庫 MySQL 租戶

    • 不支援 ALTER TABLE ADD COLUM 行內 CHECK 運算式中引用了其它列(所有類型)。

    • 不支援 ALTER TABLE MODIFY/CHANGE COLUM 行內 CHECK 運算式中引用了其它列(所有類型)。

      重要

      由於 OceanBase 資料庫 MySQL 租戶本身的限制,可能存在其它不支援的 CHECK 運算式。

修改列的類型

  • MySQL 資料庫和 OceanBase 資料庫 MySQL 租戶的被修改列在有約束的情況下,對修改後的欄位類型的限制有所不同。詳情請參見 有約束的列修改類型

  • MySQL 資料庫和 OceanBase 資料庫 MySQL 租戶的被修改列在沒有約束的情況下,對修改後的欄位類型的限制有所不同。詳情請參見 沒有約束的列修改類型

修改列的長度

  • MySQL 資料庫和 OceanBase 資料庫 MySQL 租戶的被修改列在有約束的情況下,對修改列長度的限制有所不同。詳情請參見 有約束的列修改長度

  • MySQL 資料庫和 OceanBase 資料庫 MySQL 租戶的被修改列在沒有約束的情況下,對修改列長度的限制有所不同。詳情請參見 沒有約束的列修改長度

修改列 NULLABLE 屬性

  • MySQL 資料庫

    非約束情況下,支援通過 CHANGE / MODIFY COLUMN 將 NULLABLE 修改為 NOT NULL,支援修改 NOT NULL -> NULLABLE、NULLABLE -> NULLABLE、NOT NULL -> NOT NULL。

    重要

    如果 NULLABLE 情況下存在 NULL 的資料,將無法修改 NULLABLE 為 NOT NULL。

  • OceanBase 資料庫 MySQL 租戶

    • 非約束情況下,不支援通過 CHANGE / MODIFY COLUMN 將 NULLABLE 修改為 NOT NULL。

    • 非約束情況下,支援修改 NOT NULL -> NULLABLE、NULLABLE -> NULLABLE、NOT NULL -> NOT NULL。

修改字元集或者 COLLATION

  • MySQL 資料庫:支援

  • OceanBase 資料庫 MySQL 租戶:不支援

刪除有約束的列

MySQL資料庫和 OceanBase 資料庫 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。

    • 有 PK、UK、KEY 和 FULLTEXT 約束的情況下,如果存在 COMMENT 語句,指定 NULL 執行報錯,支援 NOT NULL。

  • OceanBase 資料庫 MySQL 租戶

    • 無論是否有約束,存在 COMMENT 語句的情況下,均不支援通過 CHANGE / MODIFY COLUMN 指定修改屬性 NULLABLE -> NOT NULL、NOT NULL -> NOT NULL。

    • 非約束情況下,支援指定修改屬性 NOT NULL -> NULLABLE、NULLABLE -> NULLABLE。

    • 有 PK、UK、KEY 和 FULLTEXT 約束的情況下,如果存在 COMMENT 語句,指定修改屬性 NOT NULL -> NULLABLE,執行不報錯但未生效。