Geotools(Version 2.7.4)를 이용하여 PostgreSQL(Version 9.3) 테이블을 추가하려고 하는데 schema를 생성할 때 다음과 같은 오류가 발생하였다.
java.io.IOException: Error occurred creating table
at org.geotools.jdbc.JDBCDataStore.createSchema(JDBCDataStore.java:660)
at org.geotools.jdbc.JDBCDataStore.createSchema(JDBCDataStore.java:138)
... 25 more
Caused by: org.postgresql.util.PSQLException: ERROR: function srid(geometry) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890)
... 34 more
오류내용을 확인해 보니 srid function을 찾을 수 없다라고 나오는데, 기존 8.x버전에서 버전이 상향되면서 postgis 함수가 이름을 변경했는데 geotools 2.7.4버전 gt-jdbc-postgis가 postgresql-8.4-701.jdbc3를 참조하고 있었다.
사용하고 있는 DB 버전이 9.x 버전이기 때문에 기존의 함수를 추가해주기 위해서 C:\Program Files\PostgreSQL\9.3\share\contrib\postgis-2.1\legacy.sql 또는 legacy_minimal.sql에서 함수생성 쿼리를 찾을 수 있는데 아래 해당하는 데이터베이스에서 수행하면 된다.
(정확히 말하자면 PostgreSQL이 아니라 PostGIS에 있는 Spatial Function 이다.)
그런데 다음과 같은 오류가 또 발생하였다.
java.io.IOException: Error occurred creating table
at org.geotools.jdbc.JDBCDataStore.createSchema(JDBCDataStore.java:660)
at org.geotools.jdbc.JDBCDataStore.createSchema(JDBCDataStore.java:138)
... 25 more
Caused by: org.postgresql.util.PSQLException: Cannot commit when autoCommit is enabled.
at org.postgresql.jdbc2.AbstractJdbc2Connection.commit(AbstractJdbc2Connection.java:828)
at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:334)
... 31 more
이것도 마찬가지로 jdbc 드라이버 문제인데 postgresql-8.4-701.jdbc3로 맞춰주면 해결된다.
'Dev Story > gis' 카테고리의 다른 글
GeoServer callback function (0) | 2014.04.09 |
---|---|
[geoserver] log4j 설정 (0) | 2014.03.14 |
[geoserver] ERROR:ST_Estimated_Extent (0) | 2014.03.10 |
[openlayers] CreateRingMap for OpenLayers(based on 2.13.1) (0) | 2014.02.06 |
[GeoTools] Load the EPSG Properties File (0) | 2013.04.03 |