[MSSQL] Collation 데이터 정렬 충돌 오류 ("Korean_Wansung_CI_AS"과(와) "Korean_Wansung_CI_AI" 간의 데이터 정렬 충돌을 해결할 수 없습니다.)
where 절에 두개의 데이터베이스의 데이터를 비교할 때 아래와 같은 오류가 났다.
nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: equal to 작업에서의 "Korean_Wansung_CI_AS"과(와) "Korean_Wansung_CI_AI" 간의 데이터 정렬 충돌을 해결할 수 없습니다.
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:97)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:607)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:858)
검색해보니 두 데이터베이스에 있는 테이블의 데이터를 비교할 때 데이터 정렬이 안맞아서 생기는 오류인가보다.
한쪽으로 데이터 정렬을 맞춰주면 된다.
나같은 경우는 서브쿼리써서 데이터를 비교할때 에러가 났는데,
SELECT*
FROM DB1.테이블
WHERE 컬럼명 COLLATE Korean_Wansung_CI_AS = (SELECT 컬럼명 FROM DB2.테이블 WHERE ~~)
이나
SELECT *
FROM DB1.테이블
WHERE 컬럼명 COLLATE Korean_Wansung_CI_AI = (SELECT 컬럼명 FROM DB2.테이블 WHERE ~~)
이런식으로 COLLATE ~~ 를 넣어주면 충돌을 해결할 수 있다.