Oracle ORA-00942错误求助:表已存在但查询提示不存在
解决ORA-00942: table or view does not exist的问题
这个问题我碰到过好几次,大概率是以下几个原因之一,你可以逐一排查:
当前登录用户不是表的所属用户
你用第三方程序创建表时,可能用的是另一个数据库用户(比如第三方工具默认连接的是某个特定用户,而你sqlplus登录的是SYSTEM或者自己的普通用户)。先执行SELECT USER FROM DUAL;确认当前登录的用户是谁,再执行SELECT owner, table_name FROM all_tables WHERE table_name IN ('ZIP', 'COUNTRY', 'CITY');查看这些表的所属用户。如果表属于其他用户,查询时需要加上用户前缀,比如表属于MYUSER,就执行SELECT * FROM MYUSER.Country;表名大小写敏感问题
Oracle默认会把未加双引号的表名转成大写存储,但如果创建表时你用双引号指定了大小写(比如CREATE TABLE "Country" (...)),那查询时必须用双引号包裹表名,否则Oracle会自动把Country转成COUNTRY去查找,自然找不到。试试执行SELECT * FROM "Country";看看能不能成功。当前用户没有查询该表的权限
即使表存在,如果当前登录的用户没有被授予查询该表的权限,也会报这个错。你可以切换到表的所属用户(比如在sqlplus里用CONNECT 表所属用户名/密码;),执行GRANT SELECT ON Country TO 你的登录用户名;,然后回到当前用户重新查询。
内容的提问来源于stack exchange,提问作者Thou
相关产品推荐
相关产品推荐

