博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORA-00911错误
阅读量:6497 次
发布时间:2019-06-24

本文共 1552 字,大约阅读时间需要 5 分钟。

ORA-00911,"911"看着很霸气的错误号,虽然我还是Oracle的初学者,但每次碰到一个未见过的ORA错误号后,都有一种查案的赶脚,根据错误号、OERR、相关错误信息,判断错误原因以及找到解决方案或替代方案,虽然大部分可能还是参考前辈或官方,但碰到一次后,至少是似曾相识了,再次碰到时即使不记得,大概也能有个方向。

话说回来,这个ORA-00911的错误,是在一段用JAVA写的测试用例中碰到的,

...

private static final String SQL_INSERT_TBL = "insert into tbl (id, ...) " + "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, SYSDATE, SYSDATE);";

报的是这段SQL有这个错误。

看看错误描述:

ORA-00911 invalid character

Cause: Special characters are valid only in certain places. If special characters other than $, _, and # are used in a name and the name is not enclosed in double quotation marks ("), this message will be issued. One exception to this rule is for database names; in this case, double quotes are stripped out and ignored.
Action: Remove the invalid character from the statement or enclose the object name in double quotation marks.

很明显,这个错误主要是因为SQL中包含了非法字符,解析的时候出现报错。

但这个SQL很简单啊,就是一条INSERT语句,将他拷贝到plsql developer中好像是可以的啊,奇怪了。

调试很多次后,忽然发现,定义中结尾有个“;”,难道是这个的问题?

于是首先在plsql developer中执行INSERT语句,结尾带了两个“;”,果然报了这个ORA-00911错误。

修改代码中的语句:

private static final String SQL_INSERT_TBL = "insert into tbl (id, ...) " + "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, SYSDATE, SYSDATE)";

果然,正常回显了。

一个看似简单,但挑错较麻烦的错误,值得自己的总结。

  1. OERR错误描述是基准,要顺着这个方向排查,基本方向可以明确。
  2. 代码中出现的SQL错误,可以在plsql developer等工具中重新执行来模拟错误,但一定要和代码中的SQL语句一样,这里我可能拷贝的时候就没有带结尾的;,以至于第一次没有发现这个错误,总之一句话,除了需要判断大方向,最重要的一点就是细心,不要放过任何一个小的细节。

本文转自ICT时空 dbasdk的博客,原文链接: ,如需转载请自行联系原博主。

你可能感兴趣的文章
Jackson 处理is开头的字段
查看>>
使用PostgreSQL 9.6 架设mediawiki服务器
查看>>
数据库服务器硬件对性能的影响
查看>>
LVM
查看>>
windows+群辉服务器环境下,搭建git版本管理
查看>>
Boolean类型
查看>>
Ubuntu 修改源
查看>>
php 几个比较实用的函数
查看>>
(译)OpenGL ES2.0 – Iphone开发指引
查看>>
@RestController 与 @RequestMapping
查看>>
黑马程序员.bobo.DAY.1
查看>>
Unity shader 官网文档全方位学习(二)
查看>>
pbrun
查看>>
Java后端工程师学习大纲
查看>>
浏览器加载和渲染网页顺序
查看>>
微服务架构springcloud
查看>>
深入剖析Android系统试读样章
查看>>
测试用例出错重跑--flaky插件
查看>>
yaf的安装
查看>>
比较java与C++的不同
查看>>