Author Archives: itpsolver

mariadb 쿼리 수행시 “Illegal mix of collations” 오류 케이스

By | 9월 4, 2021

평범한 select query 였는데, join 조건에서 오류가 발생했었다. SQL Error [1267] [HY000]: (conn=2246) Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '=' 두 테이블의 charset 같은 게 상이해서 그런가 싶긴 했는데.. 검색을 통해 아래와 같은 방법으로 해결했다. 수정 전 and a.COL1 = b.COL2 수정 후 and a.COL1 = binary b.COL2 (binary를 좌변, 우변 어느쪽에… Read More »

오라클 XE 18C (Oracle Database Express Edition) 윈도우용 설치 및 테스트 사례

By | 9월 2, 2021

진짜 한 10년 만에 오라클을 설치해 보는 것 같은데, 많이 바뀌어서 좀 헤멨다. 예전의 10g, 11g 같은 것은 라이센스가 없이는 다운로드를 받을 수 없게 바뀌었고, 그래서 최근 버전인 19c를 설치해 보려고 했는데, 얘는 설치화면 자체가 windows installer 답게 생기지 않은 것 부터 불안불안 하더니 결국 계속 알 수 없는 설치 실패로 포기. 그래서 알아보니 XE… Read More »

Mybatis 오라클 프로시저 (Oracle Stored Procedure) 호출시, ‘java.sql.SQLException: 해당 위치에 지원되지 않는 SQL92 토큰: 1:’ 오류 발생 케이스.

By | 8월 20, 2021

이 케이스는 그야말로 황당 그 자체! 결론부터 말하면 mybatis xml 에서, 중괄호와 소괄호를 다른 라인에 위치시켜서 발생 한 문제이다. 그것도 같은 프레임워크에서 돌리는 MariaDB 프로시저 호출시는 문제가 없는데, ‘오라클 프로시저 호출시에만’ 이 문제가 발생했다. 전혀 예상 못하고 헤멜뻔 했는데, 인터넷에 또 선구자가 계셔서 해결할 수 있었다. 잘못된 예 { CALL PKG_A.PROC_TEST( #{rsltcode, mode=OUT, jdbcType=VARCHAR}, #{rsltmsg,… Read More »

[MySQL/MariaDB] 프로시저(procedure) 내의 select into 절에서 아무리 select 해도 결과값이 변수에 바인딩 되지 않는 경우(null)

By | 8월 16, 2021

체크포인트 프로시저의 I/O 파라미터 명이 칼럼명과 같지 않은가? 프로시저 내부에서 선언한 변수명이 칼럼명과 같지 않은가? 이것때문에 대체 시간을 얼마나 소비한거야…ㅠㅠ..

[MySQL/MariaDB] 동일한 데이터가 없을 경우는 INSERT, 있을 경우에는 UPDATE (ON DUPLICATE KEY – 오라클의 MERGE INTO 같은)

By | 8월 16, 2021

Oracle의 MERGE INTO 문의 경우 동일 데이터에 대한 판단 기준을 개발자가 쿼리에 명시하는 데 반해, MySQL 계열에서는 조건을 따로 받지 않고 Unique Index를 사용하는 것 같다. (추측임) INSERT INTO tb_sample ( col1 , col2 , col3 ) VALUES ( 'AAA' , 'BBB' , 'CCC' ) ON DUPLICATE KEY UPDATE col2 = 'XXX', col3 = 'YYY'… Read More »

Spring @Scheduled 스케쥴러 사용 샘플 (cron 표현식 등)

By | 8월 11, 2021

Spring Boot 라면 @EnableScheduling 을 붙여서 기본 셋팅이 가능한 것 같은데, 일반 Spring 에서는 아래와 같은 셋팅을 추가해 주어야 한다. thread pooling 관련 설정을 하기도 하는 것 같은데, 여기서는 가장 심플한 구성을 사용하기로 한다. spring context xml (‘task’ 가 포인트) <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <!–… Read More »

비밀번호(패스워드, password) 정규식 예시 (정규표현식, regex)

By | 8월 4, 2021

public static final String REGEX_USER_ID = "^(?=.*[a-zA-z])(?=.*[0-9])(?!.*[^a-zA-z0-9]).{5,20}$"; // 정규식 패턴 (사용자 ID – 영문자/숫자 포함 5~20자) public static final String REGEX_USER_PW = "^(?=.*[a-zA-z])(?=.*[0-9])(?=.*[`~!@$!%*#^?&\\(\\)\\-_=+])(?!.*[^a-zA-z0-9`~!@$!%*#^?&\\(\\)\\-_=+]).{8,16}$"; // 정규식 패턴 (사용자 PW – 영문자/숫자/특수문자 포함 8~16자) java 기준이므로 타 언어는 다를 수 있음 (escape character 라던가..)

DBeaver에서 구버전의 오라클(Oracle 9.2.0.7.0) 접속 후, 좌측 database navigator에서 더블클릭으로 object 조회를 했을 때 ora-01460 오류가 발생하여 해결했던 사례.

By | 7월 26, 2021

검색을 해 보니 이 문제는 오라클 드라이버의 버전이 맞지 않아서 생기는 것이라 한다. 이 경우도 마찬가지로 드라이버가 너무 최신이어서 문제가 되었던 것. 아래와 같은 과정으로 해결이 되었다. (1) 이 훌륭한 분의 블로그 에서 호환 드라이버 버전을 확인. (2) 오라클 사의 웹페이지에서 구버전 드라이버를 찾을 수가 없어서 oracle instant client를 다운로드 받았다. (오라클 웹계정 필요) 정확히… Read More »

IntelliJ 에서 다수의 프로젝트에서 공통 프로젝트 하나를 각각 모듈로 추가하여 참조할 때 발생했던 이상 상황.

By | 7월 14, 2021

project A, project B 가 있고, commmon module용 project C가 있다고 할 때, A에서 C를 import module 하고(as maven project) 빌드까지 성공한 후, B에서 C를 import module 하면, 아까 A에서 C가 빠져버리는 현상이 있었다. 다시 A에서 C를 import module 하면, 또 B에 잘 셋팅되어 있던 C가 빠져버리는 무한 반복에 빠지게 되었는데… 삽질하다가 시도해 본 것이,… Read More »

[java] 문자열 리스트(List) 중복(dup, duplicate) 체크(check)

By | 7월 5, 2021

/** * 매개변수로 받은 문자열 list에 중복이 존재할 경우 true, 아니면 false 리턴 * * @param list * @return */ public static boolean hasDuplicated(List<String> list) { if(list == null){ return false; } Set<String> set = new HashSet<>(list); if(set.size() < list.size()){ return true; } return false; } 참고 https://stackoverflow.com/questions/562894/java-detect-duplicates-in-arraylist