加入收藏 | 设为首页 | 会员中心 | 我要投稿 上饶站长网 (https://www.0793zz.com.cn/)- 数据库平台、视觉智能、智能搜索、决策智能、迁移!
当前位置: 首页 > 站长百科 > 正文

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给了我这个:

ORA-01429: Index-Organized Table: no data segment to store overflow row-pieces

这是一个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

(编辑:上饶站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读