oracle 您访问的页面不存在或已删除!

62lalag4  于 2023-11-17  发布在  Oracle
关注(0)|答案(7)|浏览(117)

我使用SQL开发人员,我与系统用户建立了一个连接到我的数据库,在我创建了一个用户并与该用户建立了另一个连接后,所有需要的权限。
但是当我尝试继续下面的操作时,我得到了SQL错误
ORA-00942表或视图不存在。

INSERT INTO customer (c_id,name,surname) VALUES ('1','Micheal','Jackson')

字符串

5cg8jx4n

5cg8jx4n1#

因为这篇文章是在stackoverflow上搜索“ORA-00942:table or view does not exist insert”时发现的最上面的一篇文章,我想提一下这个错误的另一个可能原因(至少在Oracle 12 c中):一个表使用一个序列来设置默认值,而执行插入查询的用户对该序列没有选择权限。是时候弄清楚了
要重现此问题,请以user1形式执行以下SQL:

create sequence seq_customer_id;

create table customer (
c_id number(10) default seq_customer_id.nextval primary key,
name varchar(100) not null,
surname varchar(100) not null
);

grant select, insert, update, delete on customer to user2;

字符串
然后,以user2的形式执行以下insert语句:

insert into user1.customer (name,surname) values ('michael','jackson');


结果将是“ORA-00942:table or view does not exist”,即使user2user1.customer表具有insert和select权限,并且正确地将schema所有者名称作为表的前缀。要避免此问题,您必须对序列授予select权限:

grant select on seq_customer_id to user2;

nzrxty8p

nzrxty8p2#

用户没有查看表所需的权限,表不存在,或者您正在错误的模式中运行查询
table存在吗?

select owner, 
           object_name 
    from dba_objects 
    where object_name = any ('CUSTOMER','customer');

字符串
你授予了什么特权?

grant select, insert on customer to user;


您是否正在对第一个查询中的所有者运行查询?

lpwwtiir

lpwwtiir3#

区分大小写的表(用双引号创建的表名)也会抛出同样的错误。有关详细信息,请参阅此答案。
简单地用双引号将表括起来:

INSERT INTO "customer" (c_id,name,surname) VALUES ('1','Micheal','Jackson')

字符串

a1o7rhls

a1o7rhls4#

您不能直接访问名称为customertable。它应该是user1.customer或为指向user1.customer的user2创建一个同义词customer。希望这对您有帮助。

olqngx59

olqngx595#

答案:http://www.dba-oracle.com/concepts/synonyms.htm
Oracle同义词基本上允许您创建指向其他位置存在的对象的指针。您需要Oracle同义词,因为当您登录到Oracle时,它会在您的方案(帐户)中查找您正在查询的所有对象。如果它们不存在,它将给予错误,告诉您它们不存在。

y1aodyip

y1aodyip6#

我正在使用Oracle数据库,我遇到了同样的问题。最终我发现ORACLE DB正在转换所有的元数据(表/sp/视图/触发器)大写。
我正在尝试如何在SQL中编写表名(myTempTable),而它期望如何在数据库中存储表名(MYTEMPTABLE)。同样适用于列名。
这是一个很常见的问题,开发人员谁使用SQL,现在跳到ORACLE DB。

sauutmhj

sauutmhj7#

在我的例子中,当我使用asp.net核心应用程序时,我在我的sql query中有一个错误。如果你的database包含许多schemas,你必须在table_name之前写schema_name,比如:Select * from SCHEMA_NAME.TABLE_NAME...我希望它会有帮助。

相关问题