今天在项目中需要更改一个字段类型,由varchar2改为blob,碰到了ORA-22858错误。后来通过先删后建的方式,曲线救国,具体过程如下:
1.创建测试表HOEGH

点击(此处)折叠或打开

  1. SQL>
  2. SQL> create table HOEGH(id number,name varchar2(30),loc varchar2(30));
  3. Table created
  4. SQL> insert into HOEGH values(1,\'Sun\',\'Huaguoshan\');
  5. 1 row inserted
  6. SQL> insert into HOEGH values(2,\'Zhu\',\'Gaolaozhuang\');
  7. 1 row inserted
  8. SQL> insert into HOEGH values(3,\'Sha\',\'Liushahe\');
  9. 1 row inserted
  10. SQL> commit;
  11. Commit complete
  12. SQL>
  13. SQL> select * from hoegh;
  14. ID NAME LOC
  15. ---------- ------------------------------ ------------------------------
  16. 1 Sun Huaguoshan
  17. 2 Zhu Gaolaozhuang
  18. 3 Sha Liushahe
  19. SQL>

2.修改字段LOC类型报错

点击(此处)折叠或打开

  1. SQL>
  2. SQL> desc hoegh
  3. Name Type Nullable Default Comments
  4. ---- ------------ -------- ------- --------
  5. ID NUMBER Y
  6. NAME VARCHAR2(30) Y
  7. LOC VARCHAR2(30) Y
  8. SQL>
  9. SQL> alter table hoegh modify(loc blob);
  10. alter table hoegh modify(loc blob)
  11. ORA-22858: 数据类型的变更无效
  12. SQL>

3.删除原有字段LOC,新建blob字段

点击(此处)折叠或打开

  1. SQL> alter table hoegh drop column loc;
  2. Table altered
  3. SQL> alter table hoegh add loc blob;
  4. Table altered
  5. SQL> desc hoegh
  6. Name Type Nullable Default Comments
  7. ---- ------------ -------- ------- --------
  8. ID NUMBER Y
  9. NAME VARCHAR2(30) Y
  10. LOC BLOB Y
  11. SQL>

疑问:
1.上述解决方案,被修改列的数据全部丢失,如果要保留数据,又该如何处理呢?
2.后来试了其他数据类型,例如,number类型改为blob类型也报错,不明白其中深层次的原因,还请路过的不吝赐教。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30162081/viewspace-1518456/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30162081/viewspace-1518456/

ORA-22858: 数据类型的变更无效相关推荐

  1. ORA-22858: 数据类型的变更无效 varchar2类型转换为clob类型

    oracle中,如果一个列的类型为varchar2,那么它不能直接转换为clob类型.可以通过间接的方式来修改.下面为实验: SQL>create table test(id int,name ...

  2. oracle 数据类型的变更无效 clob,ORA-22858:数据类型的变更无效varchar2类型转换为clob类型...

    oracle中,如果一个列的类型为varchar2,那么它不能直接转换为clob类型.可以通过间接的方式来修改.下面为实验: Oracle中,如果一个列的类型为varchar2,那么它不能直接转换为c ...

  3. ORA-22858: 数据类型的变更无效 varchar2类型转换为clob类型

    ORA-22858: 数据类型的变更无效 varchar2类型转换为clob类型 Oracle中,如果一个列的类型为varchar2,那么它不能直接转换为clob类型.可以通过间接的方式来修改.下面为 ...

  4. oracle数据的变更无效,ORA-22858:数据类型的变更无效varchar2类型转换为clob类型

    oracle中,如果一个列的类型为varchar2,那么它不能直接转换为clob类型.可以通过间接的方式来修改.下面为实验: Oracle中,如果一个列的类型为varchar2,那么它不能直接转换为c ...

  5. oracle 数据类型的变更无效 clob,ORA-22858数据类型的变更无效 varchar2类型转换为clob类型...

    ORA-22858: 数据类型的变更无效 varchar2类型转换为clob类型 Oracle中,如果一个列的类型为varchar2,那么它不能直接转换为clob类型.可以通过间接的方式来修改.下面为 ...

  6. Oracle将某varchar2类型的字段改为blob类型时,报错:ORA-22858: 数据类型的变更无效

    原因:Oracle不允许将字段类型修改为:object.REF.nested table.varchar.clob.blob 解决方法:1.修改该字段的名称.2.新建一个正确的字段.3.将数据同步的到 ...

  7. 对数据类型而言运算符无效。运算符为 add,类型为 text。

    最近在开发一个文件管理系统的时候,遇到另外一个问题:本来偶在本地的数据库是SQL2008,有一个字段SharedUserId 是nvarchar(max)类型,偶在查询SQL语句中用了...WHERE ...

  8. 对数据类型而言运算符无效。运算符为 add,类型为 ntext

    最近在开发一个文件管理系统的时候,遇到另外一个问题:本来偶在本地的数据库是SQL2008,有一个字段SharedUserId 是nvarchar(max)类型,偶在查询SQL语句中用了...WHERE ...

  9. 01 ORA系列:ORA-00904 标识符无效 invalid identifier

    如果希望对常见的Oracle异常ORA报错解决方案有系统的了解,请看<ORACLE系列异常总结ORA>. 转载请说明出处:https://blog.csdn.net/baidu_37107 ...

最新文章

  1. CentOS6.9编译安装postgresql和php的pdo_pgsql,pgsql扩展
  2. 自己录制的Oracle 相关视频(陆续更新)
  3. 万词霸屏的本质是什么?
  4. Centos6.8 rsync 客户端安装与设置
  5. linux 删除文件反选
  6. ios开发 热搜词demo_手机app如何开发
  7. 【AI视野·今日NLP 自然语言处理论文速览 第十期】Fri, 18 Jun 2021
  8. C++读写注册表的问题
  9. android 内存对齐,Go struct 内存对齐
  10. 腾讯云区块链产品负责人邵兵:产业区块链刚刚起步,做好基础设施才有可能进入2.0阶段
  11. Oracle ORA-08591告警
  12. Linux线程编程之生产者消费者问题【转】
  13. 文本文档如何运行c语言代码,文本文档代码写好了怎么运行
  14. 宝塔php爬虫无头浏览器,爬虫利器selenium和无头浏览器的使用
  15. newifi3刷机 php,新路由3(newifi d2)刷老毛子固件教程-路由器交流
  16. 2022最新H5手机微商城运营源码 简约轻量版 对接最新Z支付个人免签接口 带搭建教程
  17. mfc chartctrl 饼状图编写_南瓜糯米饼:外酥里糯,吃到嘴巴里,真是舌尖上的享受...
  18. CVPR 2022 Oral|港中文开源PoseC3D:基于3D-CNN的骨骼动作识别框架
  19. jieba分词使用方法
  20. 3、Kubernetes的基本使用

热门文章

  1. 轩小陌的Python笔记-day11 函数进阶
  2. mysql还原数据的方法_MySQL 数据还原
  3. Mysql 还原.sql 文件
  4. Java8新特性 consumer
  5. 时间序列(time serie)分析系列之线性回归or随机森林4
  6. 肿瘤,生物医学,统计
  7. PDCA管理工作方法
  8. [量化-022]估值之三 理想状态下的非周期和弱周期上市公司的纯粹估值
  9. 初探Javascript模块化开发
  10. On MSVC you must pass the /permissive- option to the compiler.