你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
nccloud
适配NC Cloud升库遇到的报错情况
解决:PK_WITH_CLUSTER=0
情况一:表上某一列上创建有聚集索引,但是该列不是主键列。如:CREATE TABLE TEST_C (A INT, B VARCHAR,CONSTRAINT C1 CLUSTER KEY (A));或:CREATE TABLE TEST_C1(A INT,B VARCHAR);CREATE CLUSTER INDEX IDX1 ON TEST_C1(A);这种情况下,在列A上有一个聚集索引此时若想直接修改列A的字段类型或删除列A,会报错“不能修改或删除聚集索引的列”。若想对列A进行修改,需要先删除掉A上的索引,再做修改。情况二:表上某一列为聚集主键如:CREATE TABLE TEST_PK(A INT PRIMARY KEY,B VARCHAR);此时修改或删除列A,会报错“不能修改或删除聚集索引的列”;删除表上的主键约束会报错“试图删除聚集主键”;在这种情况下,若想对列A进行修改,可以重建表,或者重新在别的列上建立一个聚集索引,然后再删掉,此时主键上的索引变成非聚集了,就可以修改了。 要想在一开始建表的时候就指定非聚集主键,有两种方法:用语句显式指定;修改ini参数PK_WITH_CLUSTER为0,默认创建主键时为非聚集型;语句显式指定:CREATE TABLE TEST_PK2(A INT,B VARCHAR,CONSTRAINT C1 NOT CLUSTER PRIMARY KEY (A));此时可以对列A进行修改与删除:修改ini参数的方式:由于PK_WITH_CLUSTER默认取值为1,即仅指定PRIMARY KEY关键字时默认创建为聚集主键,修改为0后默认创建非聚集主键。可以使用SELECT * FROM V$DM_INI WHERE PARA_NAME = 'PK_WITH_CLUSTER';语句来查询该参数的值。可以使用SP_SET_PARA_VALUE(1,'PK_WITH_CLUSTER',0);语句来将该参数值修改为0,使用SP_SET_PARA_VALUE(1,'PK_WITH_CLUSTER',1);语句将该参数值改回1。 另外,报错“表xx中不能同时包含聚集KEY和大字段”也可以通过将表重建为非聚集型主键的方式来解决。
要回复问题请先登录或注册
1 个回复
nccloud
适配NC Cloud升库遇到的报错情况
解决:PK_WITH_CLUSTER=0
情况一:
表上某一列上创建有聚集索引,但是该列不是主键列。
如:
CREATE TABLE TEST_C (A INT, B VARCHAR,
CONSTRAINT C1 CLUSTER KEY (A));
或:
CREATE TABLE TEST_C1(A INT,B VARCHAR);
CREATE CLUSTER INDEX IDX1 ON TEST_C1(A);
这种情况下,在列A上有一个聚集索引
此时若想直接修改列A的字段类型或删除列A,会报错“不能修改或删除聚集索引的列”。
若想对列A进行修改,需要先删除掉A上的索引,再做修改。
情况二:
表上某一列为聚集主键
如:
CREATE TABLE TEST_PK(A INT PRIMARY KEY,B VARCHAR);
此时修改或删除列A,会报错“不能修改或删除聚集索引的列”;
删除表上的主键约束会报错“试图删除聚集主键”;
在这种情况下,若想对列A进行修改,可以重建表,或者重新在别的列上建立一个聚集索引,然后再删掉,此时主键上的索引变成非聚集了,就可以修改了。
要想在一开始建表的时候就指定非聚集主键,有两种方法:
用语句显式指定;
修改ini参数PK_WITH_CLUSTER为0,默认创建主键时为非聚集型;
语句显式指定:
CREATE TABLE TEST_PK2(A INT,B VARCHAR,
CONSTRAINT C1 NOT CLUSTER PRIMARY KEY (A));
此时可以对列A进行修改与删除:
修改ini参数的方式:
由于PK_WITH_CLUSTER默认取值为1,即仅指定PRIMARY KEY关键字时默认创建为聚集主键,修改为0后默认创建非聚集主键。
可以使用
SELECT * FROM V$DM_INI WHERE PARA_NAME = 'PK_WITH_CLUSTER';
语句来查询该参数的值。
可以使用SP_SET_PARA_VALUE(1,'PK_WITH_CLUSTER',0);语句来将该参数值修改为0,使用SP_SET_PARA_VALUE(1,'PK_WITH_CLUSTER',1);语句将该参数值改回1。
另外,报错“表xx中不能同时包含聚集KEY和大字段”也可以通过将表重建为非聚集型主键的方式来解决。