Monthly Archives: October 2016

Error: Mybatis 노답에러 – java.sql.SQLException: 부적합한 열 유형

Error

ERROR jdbc.sqltiming – 11. CallableStatement.setNull(110, 1111)
java.sql.SQLException: 부적합한 열 유형

에러발생 상황 기록

Spring Mybatis를 이용해서
파라미터가 200개 가량 있는 Oracle의 PL/SQL구문을 호출하는 상황

손으로 하나하나 쓰기 귀찮아서 DTO의 필드를 잘라붙여서 PL/SQL 구문을 호출했더니 해당 오류가 발생했다.

에러 메세지도 애매하게 어디서 오류가 났는지 정확히 짚어주지 못하고 해서…
노가다로 디버깅을 시작…

해결

필드 이름이 잘못 들어갔을거라고 생각을 했기에 먼저 디비에 접속해서 
PL/SQL 구문을 확인하고 돌아가는 것을 확인했다.

그리고 DTO에서 필드를 20개단위로 붙여넣어가며 확인을 했다.

그 결과~

이 프로젝트에는 lombok을 이용하고 있었는데 mybatis가 getter, setter를 이용해서 DTO에 접근하다 보니 내가 생각했던 것과 좀 다른형태로 이름이 변환되고 있었고 거기서 문제가 발생했다.

mHash : 2글자째 대문자가 오는 상황
Cash : 1글자가 대문자인 상황

ex)

mhash  getMhash()
mHash getMHash()
cash getCash()
Cash getCash()??

이렇게 자동변환이 좀 애매한 상황이 생기는 경우가 있다. 이런부분을 확인해서 수정 해 주고서야 제대로 동작하는 것을 볼 수 있었다.

Facebook API. 그래프 API 탐색기 사용

탐새끼 : https://developers.facebook.com/tools/explorer

왜 이걸 쓰는가?

보통 OAuth Client샘플코드나 라이브러리를 만들어서 데이터를 확인하는데 그 과정을 거치려면 시간낭비도 심하고

코딩에 익숙하지 않거나 … 익숙하더라도 소셜API 호출에 익숙하지 않은 사람은 고생스럽다. OAuth가 표준이라고는 하지만 사이트마다 호출구조가 묘하게 다르기도 하고

facebookapiexplorer2

형광펜 표시한 부분만 API파라미터 넣어서 호출하면 된다. 예를들어

https://developers.facebook.com/docs/graph-api/reference/v2.8/user/feed

여기있는 feed호출을 보면

/{user-id}/feed

The feed of posts (including status updates) and links published by this person, or by others on this person’s profile. There are other edges which provide filtered versions of this edge:

  • /{user-id}/posts shows only the posts that were published by this person.
  • /{user-id}/tagged shows only the posts that this person was tagged in.

All of these derivative edges share the exact same reading structure, however /feed sh

 

라고 나와있으니 요즘 열받는 피자헛코리아 아이디를 넣어주고 feed를 넣고 호출 하면 결과가 출력된다.

 

API 뽑고 쓰고 별로재미도 없는데 요즘 자주 하게 되네

특수문자 영한대역

 

오라클 12c 설치 후 재시작할 때 오류

기본설치 했는데 왜 자동실행이 안되는걸까

오라클DB 12c는 미완성품인가

init.ora 파일을 복사해서 설정파일을 만들어준다

그리고 다시 실행

주석을 원래 잘 안읽는데 갑자기 눈에 들어와서…

init.ora에 보면 다음내용이 보인다

Change ‘<ORACLE_BASE>’ to point to the oracle base (the one you specify at install time)

기본 경로대로 설치했다면

ORACLE_BASE = /u01/app/oracle

12버전을 깔았는데 왜 11.2.0이 나와있는걸까… 의아하지만 오류가 나진 않을테니 넘어감

또 오류발생

디렉토리를 수동으로 만들어줬다

그리고 실행

실행은 되었으나..

오류가 나는거 보면 제대로 실행될리가 없다.

찾아보니

http://database.sarang.net/?inc=read&aid=23564&criteria=oracle&subcrit=&id=&limit=&keyword=&page=

컨트롤파일 오류라는 것 같다.

아까 설정 아래쪽에

control_files = (ora_control1, ora_control2)

이부분 수정이 필요해보인다.

 

control_files = (“/u01/app/oracle/oradata/orcl/control01.ctl”, “/u01/app/oracle/oradata/orcl/control02.ctl”)

여기는 찾아서 추가는했는데 이걸로 해도 되는지 확신이 없다

11.2버전? 무슨소린지 모르겠다

자동설치로 그냥 클릭클릭만 했을 뿐인데…

initcdb1.ora > compatible = 12.1.0.2.0 으로 변경해봤더니

다음 오류

#db_name=’cdb1′
db_name=’orcl’

이거 다시 변경하고 서버 실행

에러확인

진짜 이것만 하면 되는건가

되네

 

오라클은 엔지니어 쓰게 만들라고 어렵게 해놓나보다

오라클 안 쓰는 회사나 SE있는 회사로 이직 해야겠다

Mybatis – Oracle Procedure 연동해서 사용해서 여러개의 ResultSet을 받아오는 케이스

인터넷에 한개짜리는 많이 나오는데

여러개를 받아야 하는 경우에 대한 케이스.
한참 디버깅해서 알아냈지만
알고보면 간단하다

 

솔루션부터… Mybatis Mapper파일
매퍼를 여러개 지정 해 줘야한다. 한곳에서 result가 다 담겨나오지 않네.. 생각해보면 당연한데

 

또 Mybatis Mapper파일이지만 이번엔 프로시저 호출부분

 

Java – Mybatis 호출 코드