oracle – 当我尝试将列从VARCHAR2(200)修改为VARCHAR2(1000)时,
发布时间:2021-03-31 22:43:50 所属栏目:站长百科 来源:网络整理
导读:它当前是数据库中的VARCHAR2(200),但需要将其提升为VARCHAR(1000),因此我尝试运行此脚本: ALTER TABLE CONTRACTOR MODIFY( NOTE VARCHAR2(1000)); Oracle给了我这个: ORA-01429: Index-Organized Table: no data segment to store overflow row-pieces 这
它当前是数据库中的VARCHAR2(200),但需要将其提升为VARCHAR(1000),因此我尝试运行此脚本: ALTER TABLE CONTRACTOR MODIFY ( NOTE VARCHAR2(1000) ); Oracle给了我这个:
这是一个10g的数据库.有什么想法吗?我可以创建一个重复的列,复制数据,然后删除旧列,但我想知道在我这样做之前这个错误是什么. 解决方法根据 documentation,您需要为可能大到大的行指定溢出段以适合单个块.考虑(10.2.0.3 – 8k块): SQL> CREATE TABLE contractor ( 2 ID NUMBER PRIMARY KEY,3 data_1 CHAR(1000),4 data_2 CHAR(1000),5 data_3 CHAR(1000),6 data_4 CHAR(1000),7 data_5 CHAR(1000),8 NOTE VARCHAR2(200) 9 ) 10 ORGANIZATION INDEX; ORA-01429: Index-Organized Table: no data segment to store overflow row-pieces 但是,当您指定溢出段时: SQL> CREATE TABLE contractor ( 2 ID NUMBER PRIMARY KEY,8 NOTE VARCHAR2(200) 9 ) 10 ORGANIZATION INDEX 11 OVERFLOW TABLESPACE USER_DATA; Table created (编辑:上饶站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |