首批通过分布式安全可靠测评,为关键业务系统打造
删除主键列报错:drop rowkey column is not supported
更新时间:2025-08-07 03:41
本文介绍了在 OceanBase 数据库下,删除主键列时遇到报错:drop rowkey column is not supported 的处理方法。
问题描述
OceanBase 数据库 MySQL 模式中直接删除含主键的列,遇到报错:
ERROR 1235 (0A000): drop rowkey column is not supported
OceanBase 数据库 Oracle 模式中直接删除含主键的列,遇到报错:
ORA-00600: internal error code, arguments: -4007, drop rowkey column is not supported
原生的 MySQL 中直接删除含主键的列是可以成功:

原生的 Oracle 中直接删除含主键的列是可以成功的:

解决方法
在 OceanBase 数据库 MySQL 模式以及 Oracle 模式中直接删除含主键的列可以通过先删除主键、再删除对应的列的方式,来实现删除主键列的目的。涉及的语句如下。
ALTER TABLE table_a DROP PRIMARY KEY;
ALTER TABLE table_a DROP COLUMN ID;
OceanBase 数据库 MySQL 模式下删除主键的操作。
创建表。
obclient [mysql]> create table table_a (id int primary key,name varchar(100)); Query OK, 0 rows affected (0.082 sec)查看表结构。
obclient [mysql]> desc table_a;输出结果如下:
+-------+--------------+------+------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+------+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(100) | YES | | NULL | | +-------+--------------+------+------+---------+-------+ 2 rows in set (0.041 sec)直接删除含有主键的列。
obclient [mysql]> alter table table_a drop column id; ERROR 1235 (0A000): drop rowkey column is not supported先删除主键。
obclient [mysql]> alter table table_a drop primary key; Query OK, 0 rows affected (0.423 sec)删除主键之后,再删除主键列。
obclient [mysql]> alter table table_a drop column id; Query OK, 0 rows affected (0.290 sec)查看表结构。
obclient [mysql]> desc table_a;输出结果如下:
+-------+--------------+------+------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+------+---------+-------+ | name | varchar(100) | YES | | NULL | | +-------+--------------+------+------+---------+-------+ 1 row in set (0.041 sec)
OceanBase 数据库 Oracle 模式下删除主键的操作。
创建表。
obclient [SYS]> create table table_a (id number primary key,name varchar2(100)); Query OK, 0 rows affected (0.109 sec)查看表结构。
obclient [SYS]> desc table_a;输出结果如下:
+-------+---------------+------+------+---------+-------+ | 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)直接删除含有主键的列。
obclient [SYS]> alter table table_a drop column id; ORA-00600: internal error code, arguments: -4007, drop rowkey column is not supported先删除主键。
obclient [SYS]> alter table table_a drop primary key; Query OK, 0 rows affected (0.453 sec)删除主键之后,再删除主键列。
obclient [SYS]> alter table table_a drop column id; Query OK, 0 rows affected (0.094 sec)查看表结构。
obclient [SYS]> desc table_a;输出结果如下:
+-------+---------------+------+------+---------+-------+ | FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA | +-------+---------------+------+------+---------+-------+ | NAME | VARCHAR2(100) | YES | NULL | NULL | NULL | +-------+---------------+------+------+---------+-------+ 1 row in set (0.032 sec)
适用版本
OceanBase 数据库 V4.0.0 及更高的版本。