ORA-00942:table or view does not exist
好好的表都建成功了,在PL/SQL中编辑数据时给我来这个提示,起的我没办法了。查到如下:
oracle建表时有一个严重的问题,在此写出来,提醒大家注意:
先简单写一下错误内容,如各位已经发现过此问题并已知处理方法,请忽略此邮件内容,以节省时间。
简单的说就是如在ORACLE建表时的SQL中表名用引号括起来了,则以后对此表的所有操作都必须把此表名用引号括起来,否则报“表不存在”。
以下为错误详细介绍:
错误现象:我先用PowerDesigner生成数据库建表脚本,然后在MyEclipse中执行此脚本生成数据库表,执行后,在MyEclipse已经可以看到此表结构。然后我用select语句查询此表数据,ORACLE提示“ORA-00942 : table or view does not exist ”,表或视图不存在。但我用MyEclipse生成的SQL来查询此表数据,ORACLE没有报错。
建表语句简写如下:
create table "Test01"
(
"id" int,
"name" varchar(20)
);
试过的手写select语句如下:select * from Test01; select * from hie.Test01; select * from hie.hieuser.Test01; select * from hie.Test01;(hie是数据库实例名,hieuser是数据库用户名)
错误分析:MyEclipse自动生成的SQL为:select "id", "name" from "hieuser"."Test01",发现MyEclipse自动生成的SQL把相关标识名用引号包围,看来ORACLE对引号很感冒,据此在google上查询了oracle和“引号”相关的内容,结果如下:
oracle建表时,如建表的SQL同时满足以下条件,则不论在查询或新增数据时都必须把相应SQL中的表名用引号括起来,否则会报00942错误。
条件1.建表的SQL中表名用引号括起来了。
条件2.建表的SQL中表名中英文字符不全部都是大写(即包括一或多个小写英文字符,其他情况我没试过,如表名纯为“123”等情况)。
解决办法:强烈建议大家在ORACLE中建表时不要把表名用""括起来,否则把所有涉及到此表的代码中所有表名都加上引号会相当痛苦,在ColdFusion中为了防止和变量声明的引号冲突,可能还要加上转义字符,在JAVA中如果用HIBERNATE来做数据库交互的话,甚至连加引号的途径都没有,只能删除表后重新建表。
另:我今天在ORACLE 11g中遇到了这个问题,我记得我在两年前也遇到过这个问题,那时我记不清我使用的是哪个ORACLE版本了,反正我感觉ORACLE多个版本中都存在此问题。
正如上面描述,果不其然。11g也是有这样问题的。这样怎么办啊?PL/SQL生成的脚本都是带引号的。姑且标记一下。以后有机会再处理一下这个问题。
另外,PL/SQL developer15里连接ORACLE 11g的时候明明加上了正确的驱动名以及依赖文件,死活都连接不上,这个时候将依赖包加入classpath环境变量吧!
ORA-00942:table or view does not exist的更多相关文章
- [Err] ORA-00942: table or view does not exist
[Err] ORA-00942: table or view does not exist 当前用户加表明 例如:SCOTT."replyInfo"
- spring+quartz报错:Table 'BANKSTEELERP_OLD.QRTZ_TRIGGERS' doesn't exist
spring3.2.8 + quartz2.2.1配置到application.xml中 org.springframework.beans.factory.BeanCreationException ...
- spring+quartz报错:Table 'XXXX.QRTZ_TRIGGERS' doesn't exist
Spring4.3.4 + quartz2.2.1配置到application.xml中 <properties> <spring.version>4.3.4.RELEASE& ...
- thinkphp中SQLSTATE[42S02]: Base table or view not found: 1146 Table错误解决方法
随手记录下今天在thinkphp3.2.3中遇到的错误SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.file_info ...
- Base table or view not found
项目 代码分细致 改为Logic, Model, Controller ,View 四个模块 $model=D("Index",'Logic'); $res=$model-> ...
- MySQL: Table 'mysql.plugin' doesn't exist的解决
安装解压版MySQL以后,不能启动,日志里面出现了这个错误: MySQL: Table 'mysql.plugin' doesn't exist 这是因为mysql服务启动时候找不到内置数据库&quo ...
- mysql [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist (转载)
mysql报错Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 2013-11-2 ...
- Ubuntu 使用phpmyadmin,报错#1146 - Table ‘phpmyadmin.pma_table_uiprefs' doesn't exist
cd /etc/phpmyadminsudo vim config.inc.php 修改phpmyadmin的配置文件config.inc.php $cfg['Servers'][$i]['table ...
- 【转】安装mysql 出现:Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
来源:http://blog.csdn.net/dapeng0112/article/details/37053407 本来初始化配置是这样的: scripts/mysql_install_db -- ...
随机推荐
- C#开发系统服务时用的定时器组件
写服务时,都需要为定时器写不少的代码,感觉很麻烦,今天把这些代码封装一下,希望能简化一下这方面的工作,把精力都集中在功能上 本定时器组件,每次只启动一个服务实例进行处理,而不会同时多次执行服务代码. ...
- js当中的声明和初始化的顺序
if(!("a" in window)) { var a=1; } alert(a); 这里的alert出来undefined 这句话就相当于 var a; if(!(“a” in ...
- Ubuntu下Nutch1.2的使用
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeMAAABpCAIAAACGSdxlAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xu ...
- 一个Woker类,当id和name相同时,系统判断两个工人是相等的,打印工人对象时显示“工人:id和name”。
public class Worker { private int id; private String name; private double salary; public boolean equ ...
- Java深度历险(五)——Java泛型
作者 成富 发布于 2011年3月3日 | 注意:QCon全球软件开发大会(北京)2016年4月21-23日,了解更多详情!17 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件 ...
- Mybatis使用generator自动生成映射配置文件信息
使用mybatis配置映射文件比较的麻烦,但是有自动生成jar工具,方便加速开发速度,下面主要是该工具的使用以及相关的配置. 1.下载相关的资源 我们需要下载mybatis-generator-co ...
- 获取数据库表详细信息、存储过程、视图、的sql
select s.[name] + '.' + t.[name] as tablename from sys.tables as t,sys.schemas as s where t.schema_i ...
- StormNimbus集群保证CAP流程
Nimbus启动时,检查当前本地是不是有所有的topology的代码,同时去申请获取leader锁,如果某台nimbus节点成为了集群的leader,会再去检查一次当前本地的代码是不是包含所有活动状态 ...
- 【初级】linux pwd 命令详解及使用方法实战
pwd:查看当前工作目录 前言: Linux中用 pwd 命令来查看”当前工作目录“的完整路径,就是经常提及的所在目录,多用在生产环境多级目录中查看当前所在路径,使用此命令能给运维人员/操作人员带来很 ...
- List<T>的对比
对于类型的对比,linq原来的对比是区分不了的. 对两个list进行查询交集方法.交集,并集的函数是直接用Linq的,这里不再写. List<T> intersectList = quer ...