首页 > 其他分享 >openGauss 执行修改表分区操作时报错

openGauss 执行修改表分区操作时报错

时间:2024-05-16 14:23:32浏览次数:17  
标签:partition 时报 分区 PARTITION start ADD DROP openGauss

执行修改表分区操作时报错

问题现象

执行ALTER TABLE PARTITION时,报错如下。

ERROR:start value of partition "XX" NOT EQUAL up-boundary of last partition.

原因分析

在同一条ALTER TABLE PARTITION语句中,既存在DROP PARTITION又存在ADD PARTITION时,无论它们在语句中的顺序是什么,openGauss总会先执行DROP PARTITION再执行ADD PARTITION。执行完DROP PARTITION删除末尾分区后,再执行ADD PARTITION操作会出现分区间隙,导致报错。

处理办法

为防止出现分区间隙,需要将ADD PARTITION的START值前移。 示例如下。

--创建分区表partitiontest。
openGauss=#  CREATE TABLE partitiontest
(  
c_int integer, 
c_time TIMESTAMP WITHOUT TIME ZONE 
) 
PARTITION BY range (c_int) 
( 
partition p1 start(100)end(108),  
partition p2 start(108)end(120) 
);
--使用如下两种语句会发生报错:
openGauss=#  ALTER TABLE partitiontest ADD PARTITION p3 start(120)end(130), DROP PARTITION p2; 
ERROR:  start value of partition "p3" NOT EQUAL up-boundary of last partition. 
openGauss=#  ALTER TABLE partitiontest DROP PARTITION p2,ADD PARTITION p3 start(120)end(130); 
ERROR:  start value of partition "p3" NOT EQUAL up-boundary of last partition.
--可以修改语句为:
openGauss=#  ALTER TABLE partitiontest ADD PARTITION p3 start(108)end(130), DROP PARTITION p2;
openGauss=#  ALTER TABLE partitiontest DROP PARTITION p2,ADD PARTITION p3 start(108)end(130);

详情查看:https://opengauss.org

详情查看:https://docs-opengauss.osinfra.cn

标签:partition,时报,分区,PARTITION,start,ADD,DROP,openGauss
From: https://www.cnblogs.com/renxyz/p/18193254

相关文章

  • openGauss connection-commit
    connection.commit()功能描述此方法将当前挂起的事务提交到数据库。注意:默认情况下,Psycopg在执行第一个命令之前打开一个事务:如果不调用commit(),任何数据操作的效果都将丢失。原型connection.commit()参数无。返回值无。示例请参见示例:常用操作。详情查看:https:/......
  • openGauss connection-close
    connection.close()功能描述此方法关闭数据库连接。注意:此方法关闭数据库连接,并不自动调用commit()。如果只是关闭数据库连接而不调用commit()方法,那么所有更改将会丢失。原型connection.close()参数无。返回值无。示例请参见示例:常用操作。详情查看:https://open......
  • openGauss 重建索引失败
    重建索引失败问题现象当Desc表的索引出现损坏时,无法进行一系列操作,可能的报错信息如下。index\"%s\"containscorruptedpageatblock%u",RelationGetRelationName(rel),BufferGetBlockNumber(buf),pleasereindexit.原因分析在实际操作中,索引会由于软件问题或者硬......
  • openGauss CopyManager
    CopyManagerCopyManager是openGaussJDBC驱动中提供的一个API接口类,用于批量向openGauss中导入数据。CopyManager的继承关系CopyManager类位于org.postgresql.copyPackage中,继承自java.lang.Object类,该类的声明如下:publicclassCopyManagerextendsObject构造方法public......
  • openGauss connection-rollback
    connection.rollback()功能描述此方法回滚当前挂起事务。注意:执行关闭连接“close()”而不先提交更改“commit()”将导致执行隐式回滚。原型connection.rollback()参数无。返回值无。示例请参见示例:常用操作。......
  • openGauss connection-cursor
    connection.cursor()功能描述此方法用于返回新的cursor对象。原型cursor(name=None,cursor_factory=None,scrollable=None,withhold=False)参数表1connection.cursor参数关键字参数说明namecursor名称,默认为None。cursor_factory用于创造非标准cursor......
  • openGauss curosr-executemany_query-vars_list
    curosr.executemany(query,vars_list)功能描述此方法执行SQL命令所有参数序列或序列中的SQL映射。原型curosr.executemany(query,vars_list)参数表1curosr.executemany参数关键字参数说明query待执行的SQL语句。vars_list变量列表,匹配query中%s占位符。......
  • openGauss cursor-close
    cursor.close()功能描述此方法关闭当前连接的游标。原型cursor.close()参数无。返回值无。示例请参见示例:常用操作。详情查看:https://opengauss.org详情查看:https://docs-opengauss.osinfra.cn......
  • openGauss cursor-fetchall
    cursor.fetchall()功能描述此方法获取查询结果的所有(剩余)行,并将它们作为元组列表返回。原型cursor.fetchall()参数无。返回值元组列表,为结果集的所有结果。空行时则返回空列表。示例请参见示例:常用操作。详情查看:https://opengauss.org详情查看:https://docs-opengaus......
  • openGauss cursor-execute-query-vars_list
    cursor.execute(query,vars_list)功能描述此方法执行被参数化的SQL语句(即占位符,而不是SQL文字)。psycopg2模块支持用%s标志的占位符。原型curosr.execute(query,vars_list)参数表1curosr.execute参数关键字参数说明query待执行的sql语句。vars_list变量列......