MySQL 에서 Stored procedure나 function 을 작성하는 경우,
가끔 Procedure나 Function body 부분에 한글이나 일본어와 같은 문자를 사용해야 하는 경우가 있다.
하지만, 가끔 이러한 Procedure나 Function을 실행 해보면 글자가 깨어지는 경우를 자주 볼 수 있다.
이러한 부분의 원인은 Procedure나 Function이 만들어 질 때부터 글자가 깨어져서 만들어 지는 경우가 상당히 많다.
가끔 그냥 놓치는 경우가 많지만,
MySQL client에서 Procedure나 Function 을 만들기 전에 여러가지 character set을 설정한 후
생성하면 이러한 문제점을 해결할 수 있다.
일반적으로 MySQL client를 실행하고, character set들을 확인해보면 아래와 같이 Latin1으로 설정된 경우가 상당히 많다.
root@localhost:test>show variables like '%char%';
+--------------------------+---------+
| Variable_name | Value |
+--------------------------+---------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+---------+
지금과 같은 상태에서 Procedure나 Function을 생성하면 Body내의 한글이나 일본어가 깨어져서 생성되게 된다.
이런 경우에는 SET NAMES utf8; 명령으로 character_set_connection, _client, _results 을 변경하고 Procedure나 Function 을 생성해 주면 된다.
그리고, 가끔 이렇게 정상적으로 생성되어도 글자가 깨어지는 경우에는 아래와 같이 리턴값의 Character set을 지정해주는 것도 방법이다.
create function getString() returns varchar(20) CHARACTER SET UTF8