아래코드를 실행할 때 character-set 오류가 났다.

SQL Error [1267] [HY000]: (conn=75317) Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

 

 

SELECT CASE 
WHEN
( EXISTS (SELECT SELECTEDCODE FROM t_userfield WHERE INPUTTYPE=2 AND SelectedCode=1019)
OR EXISTS (SELECT SetUpValue FROM T_cabinetfield WHERE FieldKey IN ('KC0', 'KC1', 'KC2' ) AND SETUPVALUE=CAST(1019 AS CHAR ))
OR EXISTS (SELECT SetUpValue FROM t_sheetfield WHERE FieldKey IN ('KC0', 'KC1', 'KC2' ) AND SETUPVALUE=CAST(1019 AS CHAR ))) THEN 1
ELSE 0 
END Existence

 

이유는, collation_connection이랑 collation_server 이게 utfmb4_unicode_ci여야하는데 utfmb4_general_ci여서이다.

변경 방법은 ini파일(윈도우에선 ini인데 리눅스에서는 cnf인가 그랬던듯)에 아래와 같이 셋팅해주고 mysql 서비스 중지하고 다시 재기동하면 된다.

 

[mysqld]
basedir=C:/Program Files/MariaDB 10.2
datadir=C:/Program Files/MariaDB 10.2/data
port=3306
innodb_buffer_pool_size=2036M

character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server = utf8mb4_unicode_ci
lower_case_table_names = 1

[client]
port=3306
plugin-dir=C:/Program Files/MariaDB 10.2/lib/plugin
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

 

그런데..

DB툴로 붙으면 그게 저 셋팅이 안먹힐 수가 있다.

그래서..

DBeaver에서 connection setting을 바꿔주면 된다.

 

Edit Connection에서 

아래 캡쳐처럼 sessionVariables를 셋팅해주면 끝!

 

 

+ Recent posts