---
title: "修改表 ALTER TABLE 的不兼容点 | OceanBase 文档中心"
description: 修改表 ALTER TABLE 的不兼容点 本文为您介绍迁移 MySQL 数据库的数据至 OceanBase 社区版时，MySQL 数据库执行的 ALTER TABLE DDL 支持被 OceanBase 迁移服务（OceanBase Migration Service，OMS）的 DDL 同步组件转换，但 Ocea…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*L03BS6f-o40AAAAAAAAAAAAADiGDAQ/original) 迁移服务 OMSV 4.2.5 社区版

# 修改表 ALTER TABLE 的不兼容点

更新时间：2026-04-14 15:40:37

[编辑](https://github.com/oceanbase/oms-doc/edit/V4.2.5/zh-CN/600.data-migration/1700.supported-ddl-operations-for-incremental-migration-and-limits/100.mysql-to-obmysql/1000.mysql-incompatible/300.alter-table-incompatible/100.alter-table-incompatible-1.md)  

本文为您介绍迁移 MySQL 数据库的数据至 OceanBase 社区版时，MySQL 数据库执行的 ALTER TABLE DDL 支持被 OceanBase 迁移服务（OceanBase Migration Service，OMS）的 DDL 同步组件转换，但 OceanBase 社区版不支持执行的场景。

## 行内 CHECK 表达式中引用了其它列

- MySQL 数据库

     - 不支持 `ALTER TABLE ADD COLUM` 行内 `CHECK` 表达式中引用了其它列（所有类型）。
     - 支持 `ALTER TABLE MODIFY/CHANGE COLUM` 行内 `CHECK` 表达式中引用了其它列（所有类型）。
 - OceanBase 社区版

     - 不支持 `ALTER TABLE ADD COLUM` 行内 `CHECK` 表达式中引用了其它列（所有类型）。
     - 不支持 `ALTER TABLE MODIFY/CHANGE COLUM` 行内 `CHECK` 表达式中引用了其它列（所有类型）。

      #### 警告

      由于 OceanBase 社区版本身的限制，可能存在其它不支持的 CHECK 表达式。

## 修改列的类型

- MySQL 数据库和 OceanBase 社区版的被修改列在有约束的情况下，对修改后的字段类型的限制有所不同。详情请参见 [有约束的列修改类型](https://www.oceanbase.com/docs/community-oms-cn-1000000001302290)。
 - MySQL 数据库和 OceanBase 社区版的被修改列在没有约束的情况下，对修改后的字段类型的限制有所不同。详情请参见 [没有约束的列修改类型](https://www.oceanbase.com/docs/community-oms-cn-1000000001302291)。

## 修改列的长度

- MySQL 数据库和 OceanBase 社区版的被修改列在有约束的情况下，对修改列长度的限制有所不同。详情请参见 [有约束的列修改长度](https://www.oceanbase.com/docs/community-oms-cn-1000000001302293)。
 - MySQL 数据库和 OceanBase 社区版的被修改列在没有约束的情况下，对修改列长度的限制有所不同。详情请参见 [没有约束的列修改长度](https://www.oceanbase.com/docs/community-oms-cn-1000000001302292)。

## 修改列 NULLABLE 属性

- MySQL 数据库

  非约束情况下，支持通过 CHANGE / MODIFY COLUMN 将 NULLABLE 修改为 NOT NULL，支持修改 NOT NULL -> NULLABLE、NULLABLE -> NULLABLE、NOT NULL -> NOT NULL。

  #### 注意

  如果 NULLABLE 情况下存在 NULL 的数据，将无法修改 NULLABLE 为 NOT NULL。
 - OceanBase 社区版

     - 非约束情况下，不支持通过 CHANGE / MODIFY COLUMN 将 NULLABLE 修改为 NOT NULL。
     - 非约束情况下，支持修改 NOT NULL -> NULLABLE、NULLABLE -> NULLABLE、NOT NULL -> NOT NULL。

## 修改字符集或者 COLLATION

- MySQL 数据库：支持
 - OceanBase 社区版：不支持

## 删除有约束的列

MySQL数据库和 OceanBase 社区版对于删除有约束的列的操作限制有所不同，详情请参见 [删除有约束的列](https://www.oceanbase.com/docs/community-oms-cn-1000000001302289)。

## CHANGE / MODIFY COLUMN NOT NULL 不支持和 COMMENT 语句同时存在

示例如下：

```sql
 ALTER TABLE T MODIFY C INT NOT NULL, COMMENT 'INT COLUMN';

```

     - 非约束情况下，如果存在 COMMENT 语句，支持通过 CHANGE / MODIFY COLUMN 指定修改属性 NOT NULL、NULLABLE。
     - 有 PK、UK、KEY 和 FULLTEXT 约束的情况下，如果存在 COMMENT 语句，指定 NULL 执行报错，支持 NOT NULL。
 - OceanBase 社区版

     - 无论是否有约束，存在 COMMENT 语句的情况下，均不支持通过 CHANGE / MODIFY COLUMN 指定修改属性 NULLABLE -> NOT NULL、NOT NULL -> NOT NULL。
     - 非约束情况下，支持指定修改属性 NOT NULL -> NULLABLE、NULLABLE -> NULLABLE。
     - 有 PK、UK、KEY 和 FULLTEXT 约束的情况下，如果存在 COMMENT 语句，指定修改属性 NOT NULL -> NULLABLE，执行不报错但未生效。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
