티스토리 뷰
* 개요
하이버네이트 이용,DB 접속시 다음 URL 사용
jdbc.databaseurl=jdbc:mysql://localhost:3306/130514cidogir?useUnicode=true&characterEncoding=UTF-8&autoReconnection=true&useSSL=false
useUnicode, characterEncoding, autoReconnection, useSSL 등을 선언 하고 있는데
실제로 동작하지 않는 문제
* 환경
eclipse
Spring 5
hibernate 3
* 원인
프로퍼티 간의 구분자를 & 가 아닌 & 로 쓴게 문제였음.
XML 에서 url 쓸 경우 & 를 그대로 쓸 수 없고 & 를 사용하는 것이 맞음.
하지만 나는 jdbc.properties 파일을 사용하고
<context:property-placeholder
location="classpath:com/cidog/irs/jdbc.properties" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
...
<property name="url" value="${jdbc.databaseurl}" />
...
</bean>
xml 안에서 위와 같이 해당 파일을 가져다 쓰고 있었음.
- properties 파일에서 가져올때는 XML 에 맞게 & 가 & 로 바뀌게 됨.
그럼에도 불구하고 나는 properties 파일 안에서
...?unicode=true&characterEncoding= ...
형식으로 쓰고 있었고 결과적으로 첫번째 프로퍼티 외에는 모두 잘못 입력되게 됨.
(아마 세미콜론 의해서 그냥 종결됐을수도..)
* 해결
jdbc.properties 내에서 URL 의 & 를 &로 변경함.
* 참고 : 선언한 프로퍼티가 동작하지 않고 있단 사실은 다음 문제때문에 발견함.
http://dogcowking.tistory.com/209
그 전까지는 몰랐음..
해당 속성이 MySQL 내에서 제대로 선언되었는지 조회하는 방법은 찾지 못했음.
(show variables 는 my.cnf 조회용)
* 참고 2 : autoReconnect 등의 실행을 위해
hibernateProperties 에 hibernate.connection.autoReconnect 선언했지만 동작하지 않음
hibernate.connection.useSSL 도 마찬가지...
* 참고 3
프로퍼티 선언시 값이 틀리는 경우 오류를 발생시키지만
( ex : useSSL 에는 true/false 가능한데 abc 넣다면 오류 )
애초에 잘못된 key 를 넣은 경우는 오류가 없다
useSSLXYZ=true 라고 선언한다고 오류 없음
'SW개발 > Database' 카테고리의 다른 글
mysql 쿼리 로그 (0) | 2018.10.24 |
---|---|
group by 논리 연산 (0) | 2018.10.24 |
mysql autoReconnect (0) | 2018.10.03 |
Error Code: 3510. Tablespace XXX doesn't exist. (0) | 2018.09.18 |
Table XXXX is marked as crashed and last (automatic?) repair failed (0) | 2018.09.05 |