---
title: 删除主键列报错：drop rowkey column is not supported-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 删除主键列报错：drop rowkey column is not supported相关的常见问题和使用技巧，帮助您快速解决 删除主键列报错：drop rowkey column is not supported的难题。
---
切换语言

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

划线反馈

# 删除主键列报错：drop rowkey column is not supported

更新时间：2025-08-07 03:41

适用版本： V4.0.x、V4.1.x、V4.2.x 内容类型：Troubleshoot  

本文介绍了在 OceanBase 数据库下，删除主键列时遇到报错：`drop rowkey column is not supported` 的处理方法。

## 问题描述

- OceanBase 数据库 MySQL 模式中直接删除含主键的列，遇到报错：`ERROR 1235 (0A000): drop rowkey column is not supported`

  ![image001](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/20240410droprowkeycolumnnotsupported001.png)
 - OceanBase 数据库 Oracle 模式中直接删除含主键的列，遇到报错：`ORA-00600: internal error code, arguments: -4007, drop rowkey column is not supported`

  ![image002](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/20240410droprowkeycolumnnotsupported002.png)
 - 原生的 MySQL 中直接删除含主键的列是可以成功：

  ![image003](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/20240410droprowkeycolumnnotsupported003.png)
 - 原生的 Oracle 中直接删除含主键的列是可以成功的：

  ![image004](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/20240410droprowkeycolumnnotsupported004.png)

## 解决方法

在 OceanBase 数据库 MySQL 模式以及 Oracle 模式中直接删除含主键的列可以通过先删除主键、再删除对应的列的方式，来实现删除主键列的目的。涉及的语句如下。

```shell
ALTER TABLE table_a DROP PRIMARY KEY;

```

```shell
ALTER TABLE table_a DROP COLUMN ID;

```

- OceanBase 数据库 MySQL 模式下删除主键的操作。

     1. 创建表。

       ```shell
       obclient [mysql]> create  table table_a (id int primary key,name varchar(100));
       Query OK, 0 rows affected (0.082 sec)

       ```
     2. 查看表结构。

       ```shell
       obclient [mysql]> desc table_a;

       ```

       输出结果如下：

       ```shell
       +-------+--------------+------+------+---------+-------+
       | Field | Type         | Null | Key  | Default | Extra |
       +-------+--------------+------+------+---------+-------+
       | id    | int(11)      | NO   | PRI  | NULL    |       |
       | name  | varchar(100) | YES  |      | NULL    |       |
       +-------+--------------+------+------+---------+-------+
       2 rows in set (0.041 sec)

       ```
     3. 直接删除含有主键的列。

       ```shell
       obclient [mysql]> alter table table_a drop column id;
       ERROR 1235 (0A000): drop rowkey column is not supported

       ```
     4. 先删除主键。

       ```shell
       obclient [mysql]> alter table table_a drop primary key;
       Query OK, 0 rows affected (0.423 sec)

       ```
     5. 删除主键之后，再删除主键列。

       ```shell
       obclient [mysql]> alter table table_a drop column id;
       Query OK, 0 rows affected (0.290 sec)

       ```
     6. 查看表结构。

       ```

       输出结果如下：

       ```shell
       +-------+--------------+------+------+---------+-------+
       | Field | Type         | Null | Key  | Default | Extra |
       +-------+--------------+------+------+---------+-------+
       | name  | varchar(100) | YES  |      | NULL    |       |
       +-------+--------------+------+------+---------+-------+
       1 row in set (0.041 sec)

       ```
 - OceanBase 数据库 Oracle 模式下删除主键的操作。

     1. 创建表。

       ```shell
       obclient [SYS]> create table table_a (id number primary key,name varchar2(100));
       Query OK, 0 rows affected (0.109 sec)

       ```shell
       obclient [SYS]> desc table_a;

       ```

       输出结果如下：

       ```shell
       +-------+---------------+------+------+---------+-------+
       | FIELD | TYPE          | NULL | KEY  | DEFAULT | EXTRA |
       +-------+---------------+------+------+---------+-------+
       | ID    | NUMBER        | NO   | PRI  | NULL    | NULL  |
       | NAME  | VARCHAR2(100) | YES  | NULL | NULL    | NULL  |
       +-------+---------------+------+------+---------+-------+
       2 rows in set (0.036 sec)

       ```shell
       obclient [SYS]> alter table table_a drop column id;
       ORA-00600: internal error code, arguments: -4007, drop rowkey column is not supported

       ```shell
       obclient [SYS]> alter table table_a drop primary key;
       Query OK, 0 rows affected (0.453 sec)

       ```shell
       obclient [SYS]> alter table table_a drop column id;
       Query OK, 0 rows affected (0.094 sec)

       ```

       输出结果如下：

       ```shell
       +-------+---------------+------+------+---------+-------+
       | FIELD | TYPE          | NULL | KEY  | DEFAULT | EXTRA |
       +-------+---------------+------+------+---------+-------+
       | NAME  | VARCHAR2(100) | YES  | NULL | NULL    | NULL  |
       +-------+---------------+------+------+---------+-------+
       1 row in set (0.032 sec)

       ```

## 适用版本

OceanBase 数据库 V4.0.0 及更高的版本。

上一篇

[OceanBase 数据库 V4.x 版本 Oracle 模式外键约束下 DROP 表和 TRUNCATE 表的不同表现](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001817699)

下一篇

[OceanBase 数据库 Oracle 模式租户下，创建触发器报错 ErrorCode = 12899, SQLState = 22001, Details = Data too long for column 'trigger_body' at row 1 的原因和解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001939773) ![有帮助](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) 咨询热线
