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
덕분에 캐릭터셋 맞춰서 프로시져 잘 작성하였습니다.!
답글삭제감사합니다. 덕분에 프로시져 call 할때 한글 데이터 깨지는 문제 해결 했습니다
답글삭제