首批通过分布式安全可靠测评,为关键业务系统打造
删除分区失败,错误代码 1235
更新时间:2026-05-21 09:16
删除分区失败报 1235 错误,提示索引状态不对。本文介绍该错误的处理方法。
适用版本
OceanBase 数据库所有版本
问题现象
在表上删除分区失败,错误信息如下。
ALTER TABLE fruit DROP PARTITION p20201111;
ERROR 1235 (0A000): alter partitions when index unavailable not supported
问题原因
报错的原因是表的索引状态不是 available,可能是 error 状态,也可能是 unavailable 状态。
可以通过show index from <table_name> 查看 Comment 列是否为 available 。
其中 table_name 为表名。
obclient> SHOW INDEX FROM <table_name>;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-------------+---------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-------------+---------------+---------+
| fruit | 0 | PRIMARY | 1 | id | A | NULL | NULL | NULL | | BTREE | available | | YES |
| fruit | 1 | test | 1 | name | A | NULL | NULL | NULL | YES | BTREE | unavailable | | YES |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-------------+---------------+---------+
2 rows in set (0.01 sec)
解决方式
对于 OceanBase 数据库 V2.X 版本,按以下步骤解决:
删除非 available 状态的索引。
删除索引后,可以对表进行分区操作。
obclient> DROP INDEX <index_name> ON <table_name>;重新创建索引。
obclient> CREATE INDEX <index_name> ON <table_name>(<column_name>) USING BTREE;
对于 OceanBase 数据库 V1.4.7x 版本,按以下步骤解决:
其中
index_name为索引名称,table_name为表名,column_name为列名。删除非 available 状态的索引。
删除索引后,可以对表进行分区操作。
obclient> DROP INDEX <index_name> ON fruit;重新创建索引。
obclient> CREATE INDEX <index_name> ON <table_name>(<column_name>) USING BTREE;执行合并。
obclient> ALTER SYSTEM MAJOR FREEZE;说明
如果您创建的是唯一 (UNIQUE) 索引,需要执行两次合并。