oracle 的疑惑 ?设置用户下的表问题!
我新建了一个数据 db在数据下建立一个表 空间 data_data
临时表空间 data_temp然后又建了好几张表:tb_one ,tb_two 等等
然后我又在建了一个用户 用户名:test 密码:test 。-------------------
<add key="OracleConn" value="server=127.0.0.1:1521;user id=test;password=test;data source=db;"></add>
数据库连接应该没有问题
-------------------
然而,就在我写查询语句“select * from tb_one”
竟然报出“表或视图不存在”的问题。
-------------------
之后我又这么写 “select * from test.tb_one”
却是可以的。难道要我在写sql语句前 每一张表的前面加上“test.”么?(那样也太累了)
又或者我要把表都放在默认用户system下?
-------------------
大家帮出出注意。
我新建了一个数据 db在数据下建立一个表 空间 data_data
临时表空间 data_temp然后又建了好几张表:tb_one ,tb_two 等等
然后我又在建了一个用户 用户名:test 密码:test 。-------------------
<add key="OracleConn" value="server=127.0.0.1:1521;user id=test;password=test;data source=db;"></add>
数据库连接应该没有问题
-------------------
然而,就在我写查询语句“select * from tb_one”
竟然报出“表或视图不存在”的问题。
-------------------
之后我又这么写 “select * from test.tb_one”
却是可以的。难道要我在写sql语句前 每一张表的前面加上“test.”么?(那样也太累了)
又或者我要把表都放在默认用户system下?
-------------------
大家帮出出注意。
select * from tb_one 也就等同于 select * from test.tb_one改成 select * from db.tb_one 试一下。当然你要先做好授权给 test
USER is "SCOTT"
SQL> drop table t1;Table dropped.SQL> create table t1(id number); --在SCOTT SCHEMA下创建一个表T1Table created.SQL> insert into t1 values(1);1 row created.SQL> commit;Commit complete.SQL> select * from t1; --查询时T1表名前不加前缀SCOTT.是可以的 因为在当前自己的SCHEMA下 ID
----------
1SQL> conn / as sysdba
Connected.
SQL> show user
USER is "SYS"
SQL> select * from t1; --在SYS SCHEMA下进行查询就不行了 必须加上SCOTT.
select * from t1
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from scott.t1; ID
----------
1
如果不是 必须要加上创建表用户SCHEMA前缀
这样加其实也没什么不好 代码更易懂一些 不过如果你要在很多个地方使用查询语句 嫌加前缀麻烦
给两种解决方法参考1
创建同义词
这个方法我就不说了 不会的话网上一搜一大堆
2
更改当前会话的SCHEMA
方法参见
http://blog.csdn.net/wh62592855/archive/2009/11/13/4805919.aspx
竟然报出“表或视图不存在”的问题。
该问题存在的原因有:
1.当前登录用户不是该表的创建者。
2.该表确实不存在,不过你这个情况排除了给可能性。
楼主这样的情况建同义词没有多大必要,因为同义词是隐藏一些对其他用户不可见的对象。
然而楼主的这些表都是test他自己建的,没有必要再对test创建的对象进行隐藏了。这样只会给数据库的维护带来麻烦。