2010-04-26 3 views
5

PostgreSQL 8.4 및 JDBC4 드라이버에서 SQL Array 유형을 사용하려고합니다.JDBC/PostgreSQL의 SQL 배열 유형으로 ResultSet 업데이트

nicknames   CHARACTER VARYING(255)[] NOT NULL 

내가 thusly 히를 업데이트하기 위해 노력하고있어 : 내 칼럼으로 정의된다

은 다음

row.updateArray("nicknames", 
    connection.createArrayOf("CHARACTER VARYING", p.getNicknames().toArray())); 

(p.getNicknames()List<String> 반환)하지만 난보고 있어요 :

org.postgresql.util.PSQLException : 이름이 CHARACTER VARYING 인 에 대한 서버 배열 유형을 찾을 수 없습니다. org.postgresql.jdbc4.Jdbc4Connection.createArrayOf (Jdbc4Connection.java:21)에서 org.postgresql.jdbc4.AbstractJdbc4Connection.createArrayOf (AbstractJdbc4Connection.java:67) 에서

불행하게도, 배열 유형 돈 ' t 잘 문서화하는 것 - 나는 :(어디 PostgreSQL을 위해이 작업을 수행

모든 아이디어를하는 방법을 정확하게의 언급이없는 한

답변

8

변경 "캐릭터 VARYING"을 "VARCHAR"명령 줄 psql?. 클라이언트는 "CHARACTER VARYING"형식 이름을 허용하지만 JDBC 드라이버는 아닙니다.

org.postgresql.jdbc2.TypeInfoCache의 출처에는 허용되는 유형 이름 목록이 들어 있습니다.

createArrayOf()에 대해 모호하게-말로 계약의 일부를 생각해

유형 이름은 내장 타입, 사용자 정의 형의 이름 또는 표준 SQL이 될 수있는 데이타베이스 고유의 이름입니다 이 데이터베이스가 지원하는 유형.

나는 항상 드라이버 구현이 "당신이 원하는 무엇이든 동의 함"을 의미하는 "이 데이터베이스가 지원하는"문구 "데이타베이스 고유의 이름 '과 해석 가정. 하지만 아마도 Postgres JDBC 드라이버에 대한 버그로 신고 할 수 있습니다.

행운을 빈다.

+0

아치, 네 말이 맞아. 필자는 "데이터베이스 별"은 "DB가 사용하는 모든 것"을 의미한다고 가정합니다. 또한 다른 모든 것과는 달리 대/소문자를 구분하는 것처럼 보일만한 가치가 있습니다. 감사! –