在执行alter table big_table modify partition操作时,可能会出现以下错误提示:
ERROR 1838 (HY000): Cannot change column 'xxx' used in a partitioning expression
这是因为分区表的分区表达式中使用了被修改列的情况。修改列可能会导致分区表达式不再有效,因此需要先删除或修改分区表达式,然后再执行alter table big_table modify partition操作。
示例代码:
-- 删除分区表达式
ALTER TABLE big_table PARTITION BY RANGE (id) (
PARTITION p0 VALUES LESS THAN (100),
PARTITION p1 VALUES LESS THAN (200),
PARTITION p2 VALUES LESS THAN (MAXVALUE)
);
-- 修改分区表达式
ALTER TABLE big_table REORGANIZE PARTITION p1 INTO (
PARTITION p1a VALUES LESS THAN (150),
PARTITION p1b VALUES LESS THAN (200)
);
-- 执行alter table big_table modify partition操作
ALTER TABLE big_table MODIFY PARTITION p1a ENGINE=InnoDB;