本文为您介绍迁移 MySQL 数据库的数据至 OceanBase 数据库 MySQL 租户时,CREATE TABLE DDL 创建列的支持范围。

语法总览

create_definition: 
    col_name column_definition

column_definition: {
    data_type [NOT NULL | NULL] [DEFAULT {literal | (expr)} ]
      [VISIBLE | INVISIBLE]
      [AUTO_INCREMENT] [UNIQUE [KEY]] [[PRIMARY] KEY]
      [COMMENT 'string']
      [COLLATE collation_name]
      [COLUMN_FORMAT {FIXED | DYNAMIC | DEFAULT}]
      [ENGINE_ATTRIBUTE [=] 'string']
      [SECONDARY_ENGINE_ATTRIBUTE [=] 'string']
      [STORAGE {DISK | MEMORY}]
      [reference_definition]
      [check_constraint_definition]
  | data_type
      [COLLATE collation_name]
      [GENERATED ALWAYS] AS (expr)
      [VIRTUAL | STORED] [NOT NULL | NULL]
      [VISIBLE | INVISIBLE]
      [UNIQUE [KEY]] [[PRIMARY] KEY]
      [COMMENT 'string']
      [reference_definition]
      [check_constraint_definition]
}

支持的范围

  • 数据类型的支持详情请参见 数据类型转换

  • 支持指定 NULL / NOT NULL 属性。

  • 支持指定 DEFAULT 值:支持 DEFAULT 值为常量或函数。

  • 支持指定 VISIBLE / INVISIBLE 属性。

  • 支持指定 AUTO_INCREMENT。

  • 支持指定 COMMENT。

  • 支持指定 COLLATE。

  • 支持指定生成列,支持生成列指定 VIRTUAL | STORED 属性。

  • 支持指定 UNIQUE KEY / PRIMARY KEY / KEY,详情请参见 创建索引或约束

  • 支持指定 CHECK 约束,详情请参见 创建索引或约束

    重要

    仅 OCeanBase 数据库 MySQL 租户 3.2.3 及以上版本支持。

  • 支持指定外键,详情请参见 创建索引或约束

忽略的属性

说明

如果同步的 DDL 中包含以下属性的定义,则这些属性不会被解析和转换,最终会被忽略。

  • 指定 COLUMN_FORMAT 属性。

  • 指定 ENGINE_ATTRIBUTE 属性。

  • 指定 SECONDARY_ENGINE_ATTRIBUTE 属性。

  • 指定 STORAGE 属性。

使用限制

重要

由于 OceanBase 数据库 MySQL 租户本身的限制,如果存在以下场景,同步的 DDL 被成功转换后,执行到 OceanBase 数据库 MySQL 租户可能会报错。

  • OceanBase 数据库 MySQL 租户不支持在 DEFAULT 中指定某些函数/表达式。

  • OceanBase 数据库 MySQL 租户不支持在生成列中指定某些函数/表达式。

  • OceanBase 数据库 MySQL 租户不支持某些字段类型被指定 UNIQUE KEY / PRIMARY KEY / KEY。

  • OceanBase 数据库 MySQL 租户不支持某些 COLLATE。