기술 정보
home
채널 소개
home

Tibero to Postgresql DBLink 사용 중 테이블명 대소문자 구분으로 인한 조회 오류

문서 유형
장애 해결
분야
인터페이스/연동
키워드
dblink
postgresql
적용 제품 버전
7FS02PS
1 more property

현상

Tibero to Postgresql DBLink 사용 시 실제로 존재하는 테이블 조회할 경우 테이블이 존재하지 않는다고 출력되는 TBR-12126 오류 현상이 발생하였습니다.
아래 예시 코드와 같이 Postgresql 에서 테이블 생성 후 Tibero에서 해당 테이블을 조회하면, 에러코드가 출력됩니다.
Postgresql에서 테이블 생성
create table test (c1 int); insert into test values(1);
SQL
복사
Tibero에서 해당 테이블 조회 시 에러코드 출력
SQL> select * from test@pgnew; TBR-12126: Remote database client API error - Explicit prepare failed. - ERROR: relation "TEST" does not exist Position: 37 TBR-130097:Explicit prepare failed. - ERROR: relation "TEST" does not exist Position: 37
SQL
복사

원인

Tibero는 기본적으로 테이블과 칼럼 이름을 다 `대문자`로 변경하고, Postgresql 은 기본적으로 테이블과 칼럼 이름 전체를 `소문자`로 변경하여 해당 오류 현상이 발생하였습니다.

해결

Postgresql 에서 테이블명 소문자로 테이블 생성 시

Postgressql에서 생성한 테이블은 소문자로 생성 되므로, Tibero에서 해당 테이블 조회 시 Double quotes (””, 쌍따옴표)으로 감싸서 조회해야 합니다.
prosyncmanager=> create table test (c1 int); CREATE TABLE prosyncmanager=> insert into test values(1); INSERT 0 1
SQL
복사
Tibero에서 조회
SQL> select * from "test"@pgnew; c1 ---------- 1 1 row selected.
SQL
복사

Postgresql 에서 테이블명 대문자로 테이블 생성 시

만약 Postgresql에서 생성한 테이블이 대문자라면 Tibero에서 조회 시 Double quotes(””, 쌍따옴표)으로 감싸지 않아도 됩니다.
prosyncmanager=> create table "TEST3" (c1 int); CREATE TABLE prosyncmanager=> insert into "TEST3" values (3); INSERT 0 1 prosyncmanager=> select * from "TEST3"; c1 ---- 3 (1 row)
SQL
복사
Tibero에서 조회
SQL> select * from test3@pgnew; c1 ---------- 3
SQL
복사

테이블명 대소문자 적용에 따른 출력값 비교

1) 테이블 명이 소문자 일 때, 출력값 비교
Postgresql
prosyncmanager=> select * from test; c1 ---- 1 (1 row)
SQL
복사
Tibero
SQL> select * from "test"@pgnew; c1 ---------- 1 1 row selected.
SQL
복사
2) 테이블 명에 대소문자 섞여있을 때, 출력값 비교
Postgresql
prosyncmanager=> select * from "Test2"; c1 ---- 2 (1 row)
SQL
복사
Tibero
SQL> select * from "Test2"@pgnew; c1 ---------- 2 1 row selected.
SQL
복사
3) 테이블 명이 대문자 일 때, 출력값 비교
Postgresql
prosyncmanager=> select * from "TEST3"; c1 ---- 3 (1 row)
SQL
복사
Tibero
SQL> select * from test3@pgnew; c1 ---------- 3 1 row selected.
SQL
복사