## java.sql.SQLException: IO 예외 상황: Socket closed ==> 어떻게 해야될지..-.-
## java.sql.SQLException: ORA-01790: 대응하는 식과 같은 데이터 유형이어야 합니다
Union 을 사용하는 경우에 컬럼의 type 이 같아야 한다.
아래 예에서 bnid 는 Number 이고, errorid 는 char 인 경우에 위와 같은 에러가 날 수 있다.
ex)
select name, bnid from table_a
union
select myname, errorid from table_a
## Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection.setSavepoint(Ljava/lang/String;)Ljava/sql/Savepoint;
==> jre1.5.0_11 에서는 에러가 나고 jre1.5.0_07 로 변경하면 안남
## Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.setSavepoint(Ljava/lang/String;)Ljava/sql/Savepoint;
==> jre1.6.0_3 에서는 에러가 나고 jre1.6.0_2 로 변경하면 안남
## java.sql.SQLException: ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다
1. 실행하는 SQL 이 잘못 되어 있다.
2. SQL 마지막에 ";" 가 들어가 있다.
3. 형식에 맞지 않는 값을 사용하는 경우
ex) 에러 발생: Connection.setSavepoint("20071126"); // 숫자
ex) 정상 처리: Connection.setSavepoint("T20071126"); // 문자 + 숫자
문자가 필요한 곳에 숫자 형식의 값을 입력하는 경우
## ORA-00054: 자원이 사용중이고, NOWAIT가 지정되어 있습니다
ALTER TABLE MAUS.MCP_META_INFO
ADD (
UPDATE_SUPPLIER VARCHAR2(20)
)
ORA-00054: 자원이 사용중이고, NOWAIT가 지정되어 있습니다
1. Lock 걸린 session 찾기
select a.sid , a.serial#, b.type,c.object_name
from v$session a , v$lock b , dba_objects c
where a.sid = b.sid and b.id1 = c.object_id
and b.type = 'TM' and c.object_name='MCP_META_INFO'
2. session 제거
SQL> /
SID SERIAL# TY
---------- ---------- --
OBJECT_NAME
--------------------------------------------------------------------------------
2715 40427 TM
GAME_BBS_FREE_COMMENT
SQL>
SQL> alter system kill session '2715,40427';
System altered.
## java.sql.SQLException: 인덱스에 IN 또는 OUT 매개변수가 없음 :: 30
==> PreparedStatement에서 매개변수의 숫자가 맞지 않은경우이다.
setString(30, "aaa); 와 같이 30번에 대한 setXXX()가 없는 경우.
## ORA-01006: 바인드 변수가 없습니다.
--> PreparedStatement에서 ?의 개수보다 setXXX()의 개수가 더 많은 경우
## java.sql.SQLException: ORA-01008: 일부 변수가 결합되지 않았습니다.
--> ? 의 개수만큼 pstmt.setXXX() 를 수행하지 않아서 나는 에러임
## java.sql.SQLException: ORA-00904: 열명이 부적합합니다
--> select 나 insert 하는 컬럼명이 잘못된 경우..
## java.sql.SQLException: ORA-00913: 값의 수가 너무 많습니다
--> 입력할려는 칼럼의 갯수가 values () 란 안의 데이터 갯수보다 모자랄때 생기는 에러
ex) insert into aaa (val1, val2) values(?, ?, ?)
## ORA-01438: 지정한 정도를 초과한 값이 열에 지정되었습니다
--> CHAR 10 에 20자리의 문자를 넣는 경우..
## java.sql.SQLException: ORA-01000: 최대 열기 커서 수를 초과했습니다
--> while 안에 rs 가 있는 경우 rs를 close 해야 한다.
ResultSet rs = null;
while (it.hasNext()) {
rs = stmt.executeQuery(sql);
while(rs.next()){
} // while 2
// 꼭 rs 를 close 하자
try{rs.close(); rs = null;}catch(Exception e){}
} // while 1
ORA-00932: 데이터 유형이 일치하지 않습니다
==> int 컬럼에 String을 선언한 경우
ORA-01722: 수치가 부적합합니다
http://blog.naver.com/hschoi82?Redirect=Log&logNo=20027341968
문자인데 숫자처럼 썼다던가(비교했다던가)
숫자인데 문자처럼 썼다던가 했을 경우 생긴다.
또는 문자에 Null이거나 공백이 있는데 숫자형식으로 바꾼경우..
이 경우는 Trim을 시켜준다.
NVL명령어는 형이 같아야 한다.
//======================= 공간 연산 ==============================
## USER_SDO_GEOM_METADATA 테이블을 읽는 데 실패했습니다
==> user_sdo_geom_metadata 추가 및 공간 인덱스를 확인한다.
## java.sql.SQLException: ORA-29875: ODCIINDEXINSERT 루틴을 수행하는 곳에 실패가 있습니다
ORA-13365: 층 SRID가 도면 SRID와 일치하지 않음
ORA-06512: "MDSYS.SDO_INDEX_METHOD_9I", 줄 319에서
ORA-06512: 줄 1에서
==> user_sdo_geom_metadata.SRID 컬럼과 일치해야 한다.
입력된 SRID와 insert 시의 SRID를 동일하게 ..
오라클에서는 8307이 WGS84 이다.
## java.sql.SQLException: ORA-13050: 스페이셜 객체를 구성할 수 없습니다
ORA-06512: "MDSYS.SDO_3GL", 줄 41에서
ORA-06512: "MDSYS.MD2", 줄 726에서
ORA-06512: "MDSYS.SDO_GEOM", 줄 2950에서
ORA-06512: "MDSYS.SDO_GEOM", 줄 2977에서
==>
1. Data 가 유효한지 확인을 하라..
SELECT SDO_GEOM.VALIDATE_GEOMETRY(a.coordinate, 0.005) valid
FROM PMI_apa_1 a
SELECT SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(a.coordinate, 0.005) valid
FROM PMI_apa_1 a ;
2. 저장된 데이터의 Dimension(GTYPE)이 요청 Dimension 이랑 같은지 확인!!!
SELECT a.coordinate FROM PMI_apa_1 a ;
3. 컬럼이 null 인지 확인한다.
null 인경우 공간 인덱스를 사용 할 수 없다.
[출처] JDBC java.sql.SQLException 에러들|작성자 뻘맨