SQL 오류: ORA-00942 테이블 또는 뷰가 존재하지 않습니다.
SQL developer를 사용하여 사용자를 생성하고 필요한 모든 권한을 사용하여 해당 사용자와 다시 연결한 후 시스템 사용자와 데이터베이스에 연결했습니다.
그러나 후속 작업을 진행하려고 하면 SQL 오류가 나타납니다.
ORA-00942 테이블 또는 뷰가 존재하지 않습니다.
INSERT INTO customer (c_id,name,surname) VALUES ('1','Micheal','Jackson')
이 게시물은 "ORA-00942: table or view does not exist insert" 검색 시 stackoverflow에서 발견된 상위 게시물이기 때문에 이 오류의 다른 가능한 원인을 언급하고 싶습니다(적어도 Oracle 12c에서는). 테이블은 시퀀스를 사용하여 기본값을 설정하고 삽입 쿼리를 실행하는 사용자는 시퀀스에 대한 권한을 가지고 있지 않습니다.이것은 나의 문제였고 그것을 알아내는 데 불필요하게 오랜 시간이 걸렸다.
문제를 재현하려면 다음 SQL을 다음과 같이 실행합니다.user1
:
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 into user1.customer (name,surname) values ('michael','jackson');
결과는 "ORA-00942: table or view is not exist"가 됩니다.user2
에 대한 삽입 및 선택 권한이 있습니다.user1.customer
테이블 앞에 스키마 소유자 이름을 올바르게 붙입니다.이 문제를 방지하려면 시퀀스에 대해 선택 권한을 부여해야 합니다.
grant select on seq_customer_id to user2;
사용자에게 테이블을 보는 데 필요한 권한이 없거나 테이블이 존재하지 않거나 잘못된 스키마로 쿼리를 실행하고 있습니다.
테이블이 있나요?
select owner,
object_name
from dba_objects
where object_name = any ('CUSTOMER','customer');
어떤 특권을 부여하셨습니까?
grant select, insert on customer to user;
첫 번째 쿼리에서 소유자에 대해 쿼리를 실행하고 있습니까?
대소문자를 구분하는 테이블(큰따옴표로 작성된 테이블 이름)에서도 동일한 오류가 발생할 수 있습니다.상세한 것에 대하여는, 이 회답을 참조해 주세요.
표를 큰따옴표로 둘러싸기만 하면 됩니다.
INSERT INTO "customer" (c_id,name,surname) VALUES ('1','Micheal','Jackson')
'고객'이라는 이름의 테이블에 직접 액세스할 수 없습니다.user1.customer' 또는 user1.customer'를 가리키는 user2의 동의어 'customer'를 작성해야 합니다.이게 도움이 되길..
답변은 다음과 같습니다.http://www.dba-oracle.com/concepts/synonyms.htm
Oracle 동의어를 사용하면 기본적으로 다른 곳에 있는 개체에 대한 포인터를 만들 수 있습니다.Oracle에 로그인하면 스키마(계정)에서 쿼리하는 모든 개체가 검색되므로 Oracle 동의어가 필요합니다.존재하지 않으면 존재하지 않는다는 오류가 나타납니다.
Oracle Database를 사용하고 있는데 같은 문제가 있었습니다.결국 ORACLE DB가 모든 메타데이터(table/sp/view/trigger)를 대문자로 변환하고 있음을 알게 되었습니다.
sql에 테이블 이름(myTempTable)을 쓰는 방법을 시험했는데, myTemptable은 테이블 이름을 데이터베이스(MYTEMPTable)에 저장하는 방법을 예상합니다.열 이름에도 동일하게 적용됩니다.
이는 SQL을 사용하다가 ORACLE DB에 뛰어든 개발자에게 매우 흔한 문제입니다.
제 경우 asp.net 코어 앱을 사용했을 때 SQL 쿼리에 오류가 있었습니다.데이터베이스에 많은 스키마가 포함되어 있는 경우 다음과 같이 table_name 앞에 schema_name을 입력해야 합니다.SCHEMA_NAME에서 *를 선택합니다.TABLE_NAME... 도움이 되었으면 합니다.
언급URL : https://stackoverflow.com/questions/16129912/sql-error-ora-00942-table-or-view-does-not-exist
'source' 카테고리의 다른 글
오류 TS2339: 유형 '에 대한 속성'이 없습니다.HTML Props' (0) | 2023.02.09 |
---|---|
Wordpress post_meta에 저장할 때 'SimpleXMLement' 직렬화가 허용되지 않습니다. (0) | 2023.02.09 |
농담, 효소:불변 위반:또는 Router()를 외부에서 사용하여서는 안 됩니다. (0) | 2023.02.09 |
Angular 5의 URL에서 쿼리 파라미터를 얻는 방법 (0) | 2023.02.09 |
JSON JQ(기타 없는 경우) (0) | 2023.02.09 |