공개 동의어를 올바르게 만드는 방법
꽤 바보같은 짓이긴 하지만 도움이 필요해요.
제 dbowner 소유의 테이블이 있습니다.이름은 mydbowner.mytable 입니다.나는 다음 명령을 실행하여 공개적인 동의어를 만들려고 했습니다.
mydbowner.mytable의 Public Synonym mytable을 만들거나 바꿉니다;
이 작업을 수행하면 테이블을 조회할 수 있습니다.
ORA-01775: 동의어 루프 체인
어떻게 하면 문제가 없이 이 동의어를 만들 수 있을까요?
저는 저스틴이 올바른 방향으로 가고 있다고 생각합니다.내 dbowner.mytable이 존재하지 않는다는 것을 의미한다고 생각합니다.
예는 다음과 같습니다.
SQL> conn mbobak
Enter password:
Connected.
SQL> drop table mytable;
drop table mytable
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> create public synonym mytable for mbobak.mytable;
Synonym created.
SQL> select * from mytable;
select * from mytable
*
ERROR at line 1:
ORA-01775: looping chain of synonyms
제 생각에는 오라클이 제 테이블을 해결하려고 하는데, mbobak 스키마에 제 테이블이 없어서 PUBLIC에서 찾고, 찾아서 mbobak.mytable을 가리키는 것 같습니다.근데 음보박. 내 테이블이 존재하지 않아서 PUBLIC에서 내 테이블을 찾고 루프가 있습니다.
내 테이블을 만들면 오류가 사라집니다.
SQL> create table mytable as select * from dual;
Table created.
SQL> select * from mytable;
D
-
X
1 row selected.
SQL> drop table mytable;
Table dropped.
SQL> select * from mytable;
select * from mytable
*
ERROR at line 1:
ORA-01775: looping chain of synonyms
네, 공개적인 동의어가 mbobak.mytable로 해결되면 ORA-942 "table or view is not existing"이라는 오류를 반환해야 하므로 완전히 말이 되지 않는다는 것을 알고 있습니다.
하지만, 이것은 그것이 작동하는 방법인 것 같습니다.
QED
도움이 되길 바랍니다.
당신이 받고 있는 오류는mydbowner.mytable
사실은 테이블이 아닙니다.무엇인가.
SELECT object_type
FROM all_objects
WHERE owner = 'MYDBOWNER'
AND object_name = 'MYTABLE'
돌아오십니까?
언급URL : https://stackoverflow.com/questions/8995098/how-to-correctly-make-a-public-synonym
'programing' 카테고리의 다른 글
팬시트리 전체 다시 로드 (0) | 2023.10.01 |
---|---|
Ajax가 빈 값을 전달하지만 ASP에서 컨트롤러가 null이 됩니다.NET MVC (0) | 2023.10.01 |
PHP의 Laravel에서 laravel.log를 지우려면 어떻게 해야 합니까? (0) | 2023.10.01 |
HANDLES에 fdopen과 동등한 윈도우가 있습니까? (0) | 2023.10.01 |
조건부 실행 (&& 및 ||) (0) | 2023.10.01 |