2013-03-08 8 views
16

업데이트 : 또한 PgAdmin 지원 메일 링리스트 here에 질문했습니다. 그래서pgAdmin에서 Redshift 클러스터에 연결


내가하고 실행 클러스터 AWS Redshift에 있고, 나는 pgAdmin를 통해 클러스터에 연결하려는

$ psql -h host -d database -p port -U username

와 명령 줄에서 연결할 수 있어요 III,하지만 난 클러스터에 연결 한 후, 나는 내용의 오류 얻을 :

Error: Must be superuser to view default_tablespace

참고, 내가 입력 한 필드했다 : 이름, 호스트, 포트, 유지 관리 DB, Usern ame 및 Password가 있으며, 모두 psql 명령과 동일하게 입력됩니다.

이제, psql를 통해 연결하고, I가 선택하면 :

$ \tu

이 사용자 [AWS 부여 마스터 유저]가 사실은 수퍼. 그래서이 오류의 원인이 무엇인지에 대한 제안이 있습니까?

다른 원격 DB에 연결할 때 수퍼 유저가 아니어도이 오류가 발생하지 않으므로 여기에서 어떤 일이 발생합니까? Redshift는 pgAdmin을 통해 연결할 때이 오류가 발생합니다.

+1

그들은 매우 맞춤화 된 PostgreSQL 변형을 실행하고 있습니다. 그래서 완벽하게 호환되지 않는다면 놀라지 않을 것입니다. 'SHOW default_tablespace;를 실행하면'psql'이 연결될 때 무엇을합니까? 이 경우 나는 그들이 시스템 세부 사항을 감추기 위해 내부 허가 체크를하지 않았다고 의심한다. –

+0

psql에서 동일한 오류가 발생합니다!3 일전에 pgAdmin을 통해 연결할 수 있었으므로 그 이후로 변경되었을 수 있습니다. 이 사용 권한 문제에도 불구하고 pgAdmin을 통해 Redshift의 테이블을 쿼리 할 수 ​​있습니까? 나는. pgAdmin이 default_tablespace를 읽지 못하도록하는 것과 같은 것? 내가하는 말을 정말로 이해할 수는 없지만이 문제를 해결하기 위해 pgAdmin을 해킹 할 수 있는지 알아 내려고합니다. – Justin

+1

나는 한 번도 보지 못했지만 소스 코드 레벨 변경이 필요하다고 의심하지만, 아마도 그렇게 복잡한 것은 아닙니다. 'default_tablespace' GUC에 접근 할 수 없을 때 테이블 스페이스 인식을 숨길 필요가 있습니다. PgAdmin-III는 실제로 PostgreSQL에 대한 제 3 자 변형이 아니지만 패치를 수락 할 것이라고 상상합니다. pgadmin-support 메일 링리스트를 물어보십시오. 그렇다면 게시물의이 질문에 다시 링크하고 여기에 게시물의 보관 파일에 대한 링크를 추가하십시오. –

답변

12

PGAdmin 1.6.3 (from March 2007!)은 Redshift로 나를 (OS X에서) 잘 작동합니다.

Redshift가 Postgres 8.0에서 분기되었다는 점을 감안할 때 이것은 당연합니다.

참고 : '괜찮습니다'라는 말은 GUI 작업에서 원하는 것입니다. 해산 할 몇 가지 단점과 오류 메시지가 여전히 있습니다.

+0

Postgres 버전에 문제가있는 것 같습니다. 불행히도 1.6.3은 우리의 목적을 위해 작동하지 않을 것이지만, 무슨 일이 일어나고 있는지 알면 좋습니다. – Justin

3

SQLWorkbench를 사용해보십시오. 나는 pgadmin을 시도하지 않았지만, SqlWorkbench와 PostgreSQL jdbc connector는 완벽하게 작동한다.

+1

SQLWorkbench를 성공적으로 사용했지만 pgAdmin을 사용하여 연결하려는 다른 이유가 있습니다. – Justin

1

당신이 필요로하는 모든 복잡한 SQL을 편집 할 수있는 GUI 방식이고 당신이이 열립니다 당신이 편집 바로 가기를

pguser=> \e 

를 사용할 수있는 변화를 할 때마다 복사 - 붙여 넣기하지 않으려면

$ EDITOR=gedit psql -h host -d database -p port -U username 
,536 : 당신의 선택의 편집기 (기본이 vim하지만 gedit을 사용하려는 경우)

단지의 유지 세션을 위해 그것을 덮어 쓰려면이 실행 ($EDITOR으로 컴퓨터에 저장)

\e을 사용하여 SQL을 편집 한 다음 저장하고 종료하십시오. 코드가 실행됩니다. 그런 다음 \e을 다시 열면 편집기에서 이전 쿼리를 채 웁니다.

즐기십시오!

관련 문제