zoukankan      html  css  js  c++  java
  • SQL 报错信息整理及解决方案(持续更新)

    整理一下自己遇见过的 SQL 各种报错信息及相应解决方法,方便以后查阅,主要平台为 Oracle:

    • ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值:

      • 原因:插入操作时,数据大于字段设定大小,Oracle 会自动将数据转为 long 型,然后报插入失败错误。
      • 解决:更改数据大小,或者将字段设为 clob 或 blob 类型。
    • "ORA-01012: not logged on" 以及 "Connected to an idle instance":

      • 原因:重启 Oracle 服务器时,如果在运行 shutdown 指令关闭数据库的时候意外断开连接,后面想再次进入 Oracle 服务器启动时便可能会遇见如下报错:
        • 使用 sqlplus /nolog 进入 SQL Plus 后,想连接数据库 conn username/password as sysdba 时,会报 Connected to an idle instance. 错误。
        • 在 SQL Plus 界面,想直接 startup 启动数据库时,会报 ORA-01012: not logged on 错误。

        通过查阅资料,判断报错原因是在关闭数据库意外退出后,ORACLE一直处于锁定状态,不再允许其他操作。

      • 解决:
        • 先关闭ORACLE进程:

          ps -ef|grep ora_dbw0_$ORACLE_SID //找到ORACLE进程
          kill -9 PID //通过找到的进程PID号kill掉该进程
        • 然后重启ORACLE:

          sqlplus /nolog //进入SQL Plus
          startup //启动ORACLE

        最后附上关闭ORACLE的命令说明,以免造成错误的关闭操作:

        • shutdown normal(所有连接断开后关闭数据库)
        • shutdown transactional(所有事务结束后主动断开连接,并关闭数据库)
        • shutdown immediate(主动断开连接和事务)
        • shutdown abort(立即关闭数据库,由于该操作不会同步数据,清空回滚段,不触发检查点,所以比较危险,每次启动需要实例恢复)
    • ORA-00913: 值过多:

      • 原因:向表中插入数据时字段个数不匹配,例如
        insert into table_1 (?, ?) values (?, ?, ?)

        插入值比字段多了一个,则会报该错误

      • 解决:插入字段与插入值修改为个数一致就可以解决了
    • ORA-01791:不是SELECTed表达式错误:

      • 原因:用 select 查询语句时,若同时使用distinct去重与order by排序,就会报该错误,如
        select distinct a from table1 where ... order by b;

        这是因为 order by 根据 b 列排序时与 distinct 产生冲突,distinct 找不到 b 列。

      • 解决:查询列中添加b列,即:
        select distinct a,b from table1 where ... order by b;
        
        
  • 相关阅读:
    eval()和JSON.parse()的区别
    Android的Monkey和MonkeyRunner
    JavaScript event对象clientX,offsetX,screenX异同
    @-webkit-keyframes 动画 css3
    W3C标准定义的DOM由哪三部分组成
    Javascript 中的神器——Promise
    为什么你的javascript学了这么久,水平还是烂成了渣?
    js深入理解构造函数和原型对象
    js常用面试题整理
    面试宝典:25个最经典的JavaScript面试题及答案
  • 原文地址:https://www.cnblogs.com/honoka/p/5085322.html
Copyright © 2011-2022 走看看