ÃֽŠ°Ô½Ã±Û(DB)
2017.03.13 / 14:47

[MySQL] ij¸¯ÅͼÂ

¹Ù¹Ù¸®¾È
Ãßõ ¼ö 333

1. ¹®ÀÚÁýÇÕ(ij¸¯ÅÍ ¼Â)

MySQL ¼­¹ö¿¡¼­ °¢ Å×À̺íÀÇ Ä÷³Àº ¹«µÎ ¼­·Î ´Ù¸¥ ¹®ÀÚÁýÇÕÀ» »ç¿ëÇØ ¹®ÀÚ¿­ °ªÀ» ÀúÀåÇÒ ¼ö ÀÖ´Ù. ¹®ÀÚÁýÇÕÀº
CHAR, VARCHAR, TEXT ŸÀÔÀÇ Ä÷³¿¡¸¸ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. MySQL¿¡¼­ Ä÷³ ´ÜÀ§·Î ¹®ÀÚÁýÇÕÀ» °ü¸®ÇÏÁö¸¸ ÆíÀǸ¦
À§ÇØ MySQL ¼­¹ö¿Í DB, ±×¸®°í Å×ÀÌºí ´ÜÀ§·Î ±âº» ¹®ÀÚÁýÇÕÀ» ¼³Á¤ÇÒ ¼ö ÀÖ°Ô ±â´ÉÀ» Á¦°øÇÑ´Ù.
Å×ÀÌºí ¹®ÀÚÁýÇÕÀ» UTF8·Î ¼³Á¤Çϸé Ä÷³ÀÇ ¹®ÀÚÁýÇÕÀ» º°µµ·Î ÁöÁ¤ÇÏÁö ¾Ê¾Æµµ ÇØ´ç Å×ÀÌºí¿¡ ¼ÓÇÑ Ä÷³Àº UTF8 ¹®ÀÚ
ÁýÇÕÀ» »ç¿ëÇÑ´Ù.

MySLQL ¼­¹ö¿¡¼­ »ç¿ë°¡´ÉÇÑ ¹®ÀÚÁýÇÕÀº "SHOW CHARACTER SET" ¸í·É¾î·Î È®ÀÎÇØ º¼ ¼ö ÀÖ´Ù.

MySQL> show character set;
+----------+---------------------------------+---------------------+--------+
| Charset  | Description                     | Default collation   | Maxlen |
+----------+---------------------------------+---------------------+--------+
| latin1   | cp1252 West European            | latin1_swedish_ci   |      1 |
| euckr    | EUC-KR Korean                   | euckr_korean_ci     |      2 |
| utf8     | UTF-8 Unicode                   | utf8_general_ci     |      3 |
......


2. MySQL ¹®ÀÚÁýÇÕÀ» ¼³Á¤ÇÏ´Â ½Ã½ºÅÛ º¯¼ö


character_set_system
 
MySQL Server°¡ T ½Äº°ÀÚ(Identifier, Å×À̺í¸íÀ̳ª Ä÷³¸í µî)¸¦ ÀúÀåÇϱâ À§ÇØ »ç¿ëÇϴ ij¸¯ÅͼÂ
Ç×»ó utf8·Î ¼³Á¤µÇ¾îÀÖÀ¸¸ç, »ç¿ëÀÚ°¡ ¼³Á¤Çϰųª º¯°æÇÒ ¼ö ¾ø´Ù.

 
character_set_server
 
MySQL ServerÀÇ Default Character set
DB³ª TABLE ¶Ç´Â COLUMN¿¡ ¾Æ¹«·± ¹®ÀÚÁýÇÕÀÌ ¼³Á¤µÇÁö ¾Ê¾ÒÀ» ¶§, ÀÌ º¯¼öÀÇ °ªÀÌ ±âº»°ªÀ¸·Î »ç¿ë µÊ
°¢ Ä¿³Ø¼Ç¿¡¼­ÀÇ ÀÓÀÇÀÇ ¹®ÀÚÁýÇÕÀ¸·Î º¯°æÇؼ­ »ç¿ë °¡´ÉÇÏ´Ù.

 
character_set_database
MySQL DatabaseÀÇ Default Character set
ÀÌ º¯¼ö°¡ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é character_set_server¿Í °°Àº °ªÀ» °¡Áø´Ù.
°¢ DB, TABLE, COLUMNÀº ±âº» ¹®Àڼ°ú °ü°è¾øÀÌ °³º°ÀûÀÎ ¹®ÀÚÁýÇÕÀ» °¡Áú ¼ö ÀÖÀ¸¸ç DB¸¦ »ý¼ºÇÒ ¶§ ¾Æ¹«·± ¹®ÀÚÁýÇÕÀÌ ¸í½ÃµÇÁö ¾Ê¾Ò´Ù¸é, ÀÌ º¯¼öÀÇ °ªÀÌ ±âº»°ªÀ¸·Î »ç¿ë µÊ

 
character_set_filesystem
 
LOAD DATA INFILE ... ¶Ç´Â SELECT ... INTO OUTFILE ¹®ÀåÀÌ ½ÇÇàµÉ ¶§ ÆÄÀÏÀÇ ÀÐ°í ¾²±â¿¡ »ç¿ëµÇ´Â Character set
µ¥ÀÌÅÍ ÆÄÀÏÀÇ ³»¿ëÀ» ÀÐÀ» ¶§ »ç¿ëÇÏ´Â ¹®ÀÚÁýÇÕÀÌ ¾Æ´Ñ, ÆÄÀÏÀÇ À̸§À» ãÀ» ¶§ »ç¿ëÇÏ´Â ¹®ÀÚÁýÇÕ
ÆÄÀÏÀ» ¿ÀÇÂÇÏ·Á´Â ½Ãµµ°¡ ÀÖ±â Àü¿¡ character_set_client¿¡¼­ character_set_filesystemÀ¸·Î º¯È¯µÈ´Ù.
±âº»°ªÀº binaryÀε¥, ÀÌ°ÍÀº ¾Æ¹«·± º¯È¯ÀÌ ¾ø´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.
¸ÖƼ ¹ÙÀÌÆ® ÆÄÀÏ À̸§À» »ç¿ëÇÒ ¼ö ÀÖ´Â ½Ã½ºÅÛ¿¡¼­´Â ¼­·Î ´Ù¸¥ °ªÀ» »ç¿ëÇϵµ·Ï ÇÑ´Ù.
¿¹¸¦ µé¸é ½Ã½ºÅÛÀÌ UTF8·Î ÆÄÀÏÀ̸§À» Ç¥½ÃÇÑ´Ù¸é, character_set_filesystemÀ» 'utf8'·Î ¼³Á¤ÇÑ´Ù.
ÀÌ º¯¼ö´Â MySQL 5.1.6¿¡¼­ Ãß°¡ µÇ¾ú´Ù.
°¢ Ä¿³Ø¼Ç¿¡¼­ ÀÓÀÇÀÇ ¹®ÀÚÁýÇÕÀ¸·Î º¯°æÇؼ­ »ç¿ë °¡´ÉÇÏ´Ù.
 

 character_set_client
 
MySQL ClientÀÇ Default Character set
Client·ÎºÎÅÍ Àü¼ÛµÇ´Â Äõ¸®¹®ÀåÀÇ ¹®ÀÚÁýÇÕÀ» ¸»ÇÑ´Ù.
°¢ Ä¿³Ø¼Ç¿¡¼­ ÀÓÀÇÀÇ ¹®ÀÚÁýÇÕÀ¸·Î º¯°æÇؼ­ »ç¿ë °¡´ÉÇÏ´Ù.

character_set_connection

MySQL Server°¡  Client·ÎºÎÅÍ Àü´Þ¹ÞÀº Äõ¸® ¹®Àå¿¡¼­ ÀÎÆ®·Îµà¼­(Introducer)°¡ ¾ø´Â ¸®ÅÍ·²(literal) ¶Ç´Â ¼ýÀÚ(number)°ªÀ» ¹®ÀÚ(String)¿­·Î º¯È¯ÇÒ ¶§ »ç¿ëÇÏ´Â Character set
°¢ Ä¿³Ø¼Ç¿¡¼­ ÀÓÀÇÀÇ ¹®ÀÚÁýÇÕÀ¸·Î º¯°æÇؼ­ »ç¿ë °¡´ÉÇÏ´Ù.

 
character_set_results
 
MySQL Server°¡ Äõ¸®ÀÇ Ã³¸® °á°ú ¶Ç´Â error ¸¦ Client·Î retuen ÇÒ ¶§ »ç¿ëÇÏ´Â Character set
°¢ Ä¿³Ø¼Ç¿¡¼­ÀÇ ÀÓÀÇÀÇ ¹®ÀÚÁýÇÕÀ¸·Î º¯°æÇؼ­ »ç¿ë °¡´ÉÇÏ´Ù.




- Server, Client°£ÀÇ Ä³¸¯Åͼ º¯È¯


Äõ¸® ½ÇÇà ¿äû ½Ã 
»ç¿ëÀÚ°¡ ¿äûÇÑ Äõ¸® ¹®ÀåÀº ÇöÀç character_set_clientÀε¥
MySQL ¼­¹ö´Â ÀÌ Äõ¸® ¹®ÀåÀÇ Ä³¸¯ÅͼÂÀ» character_set_connectionÀ¸·Î º¯È¯ ÈÄ ½ÇÇàÇÑ´Ù.
¸¸¾à, character_set_cilent¿Í character_set_connectionÀÌ µ¿ÀÏÇÑ °æ¿ì º¯È¯ÇÏÁö ¾Ê´Â´Ù.

 
 
Äõ¸® °á°ú Àü¼Û ½Ã
Ä÷³ÀÇ Ä³¸¯ÅͼÂÀÌ Latin2Àε¥, character_set_results°¡ Latin1À̶ó¸é
MySQL ¼­¹ö´Â Ä÷³ÀÇ °ªÀ» Latin2¿¡¼­ Latin1À¸·Î º¯È¯Çؼ­ ¸®ÅÏÇϸç
¸¸¾à, Ä÷³°ú character_set_results°¡ µ¿ÀÏÇÑ °æ¿ì º¯È¯ÇÏÁö ¾Ê´Â´Ù.


 MySQL¿¡¼­ ij¸¯Åͼ ÀÏ°ýº¯°æ

MySQL> SET NAMES 'utf8'; // ÇöÀç Connection¿¡¼­¸¸ È¿·Â
MySQL> charset utf8;     // ConnectionÀÌ ´Ù½Ã ¿¬°áµÇ¾îµµ È¿·Â

À§ ¸í·É¾î·Î ¾Æ·¡ÀÇ 3°³ ¼³Á¤ÀÌ Çѹø¿¡ º¯°æµÊ

MySQL> SET character_set_client = 'utf8';
MySQL> SET character_set_connection = 'utf8';
MySQL> SET  character_set_results = 'utf8';


3.  ÄÝ·¹À̼Ç(Collation)

ÄÝ·¹À̼ÇÀº ¹®ÀÚ¿­ Ä÷³ÀÇ °ª¿¡ ´ëÇÑ ºñ±³³ª Á¤·Ä ¼ø¼­¸¦ À§ÇÑ ±ÔÄ¢À» ÀǹÌÇÑ´Ù. Áï ºñ±³³ª Á¤·Ä ÀÛ¾÷¿¡¼­
¿µ¹® ´ë¼Ò¹®ÀÚ¸¦ °°Àº °ÍÀ¸·Î ó¸®ÇÒÁö ¾Æ´Ï¸é ´õ Å©°Å³ª ÀÛÀº °ÍÀ¸·Î ÆÇ´ÜÇÒÁö¿¡ ´ëÇÑ ±ÔÄ¢À» Á¤ÀÇÇÏ´Â °ÍÀÌ´Ù.

MySQLÀÇ ¸ðµç ¹®ÀÚ¿­ ŸÀÔÀÇ Ä÷³Àº µ¶¸³ÀûÀÎ ¹®ÀÚÁýÇÕ°ú ÄÝ·¹À̼ÇÀ» °¡Áø´Ù. °¢ Ä÷³¿¡ ´ëÇØ µ¶¸³ÀûÀ¸·Î ¹®ÀÚÁýÇÕÀ̳ª
ÄÝ·¹À̼ÇÀ» ÁöÁ¤ÇÏµç ±×·¸Áö ¾Êµç µ¶¸³ÀûÀÎ ¹®ÀÚÁýÇÕ°ú ÄÝ·¹À̼ÇÀ» °¡Áö´Â °ÍÀÌ´Ù. °¢ Ä÷³¿¡ ´ëÇØ µ¶¸³ÀûÀ¸·Î ÁöÁ¤ÇÏÁö
¾ÊÀ¸¸é MySQL ¼­¹ö³ª DBÀÇ ±âº» ¹®ÀÚÁýÇÕ°ú ÄÝ·¹À̼ÇÀÌ ÀÚµ¿À¸·Î ¼³Á¤µÈ´Ù.

MySQL¼­¹ö¿¡¼­ »ç¿ë °¡´ÉÇÑ ÄÝ·¹ÀÌ¼Ç ¸ñ·ÏÀº "SHOW CHARACTER SET" ¸í·ÉÀ» ÀÌ¿ëÇØ È®ÀÎ ÇÒ ¼ö ÀÖ´Ù.

mysql> show collation;
+--------------------------+----------+-----+---------+----------+---------+
| Collation                | Charset  | Id  | Default | Compiled | Sortlen |
+--------------------------+----------+-----+---------+----------+---------+
| latin1_bin               | latin1   |  47 |         | Yes      |       1 |
| latin1_general_ci        | latin1   |  48 |         | Yes      |       1 |
| latin1_general_cs        | latin1   |  49 |         | Yes      |       1 |
| euckr_korean_ci          | euckr    |  19 | Yes     | Yes      |       1 |
| euckr_bin                | euckr    |  85 |         | Yes      |       1 |
| utf8_general_ci          | utf8     |  33 | Yes     | Yes      |       1 |
| utf8_bin                 | utf8     |  83 |         | Yes      |       1 |
...


ÄÝ·¹À̼ÇÀÇ À̸§Àº 2°³ ¶Ç´Â 3°³ÀÇ ÆÄÆ®·Î ±¸ºÐµÅ ÀÖÀ¸¸ç, °¢ ÆÄÆ®´Â ´ÙÀ½°ú °°Àº Àǹ̰¡ ÀÖ´Ù.

3°³ÀÇ ÆÄÆ®·Î ±¸¼ºµÈ ÄÝ·¹ÀÌ¼Ç À̸§

*ù ¹ø° ÆÄÆ®´Â ¹®ÀÚÁýÇÕ À̸§
*µÎ ¹ø° ÆÄÆ®´Â ÇØ´ç ¹®ÀÚÁýÇÕÀÇ ÇÏÀ§ ºÐ·ù
*¼¼ ¹ø° ÆÄÆ®´Â ´ë¹®ÀÚ³ª ¼Ò¹®ÀÚÀÇ ±¸ºÐ ¿©ºÎ¸¦ ³ªÅ¸³½´Ù. ¼¼ ¹ø° ÆÄÆ®°¡ "ci" ÀÌ¸é ´ë¼Ò¹®ÀÚ¸¦
 ±¸ºÐÇÏÁö ¾Ê´Â ÄÝ·¹À̼Ç(Case Insensitive)À» ÀǹÌÇϸç, "cs"ÀÌ¸é ´ë¼Ò¹®ÀÚ¸¦ º°µµÀÇ ¹®ÀÚ·Î ±¸ºÐÇÏ´Â
 ÄÝ·¹À̼Ç(Case sensitive)ÀÌ´Ù.

2°³ÀÇ ÆÄÆ®·Î ±¸¼ºµÈ ÄÝ·¹ÀÌ¼Ç À̸§

*ù ¹ø°´Â ¹®ÀÚÁýÇÕ À̸§
*µÎ ¹ø°´Â Ç×»ó "bin"À̶ó´Â Å°¿öµå°¡ »ç¿ëµÈ´Ù. ¿©±â¼­ "bin"Àº ÀÌÁø µ¥ÀÌÅÍ(binary)¸¦ ÀǹÌÇϸç, ÀÌÁø
 µ¥ÀÌÅÍ·Î °ü¸®µÇ´Â ¹®ÀÚ¿­ Ä÷³Àº º°µµÀÇ ÄÝ·¹À̼ÇÀ» °¡ÁöÁö ¾Ê´Â´Ù. "xxx_bin"À̶ó¸é ºñ±³ ¹× Á¤·ÄÀº ½ÇÁ¦
 ¹®ÀÚ µ¥ÀÌÅÍÀÇ ¹ÙÀÌÆ® °ªÀ» ±âÁØÀ¸·Î ¼öÇàµÈ´Ù.

*ÁÖÀÇ
Á¶ÀÎÀ» ¼öÇàÇÏ´Â ¾çÂÊ Å×À̺íÀÇ Ä÷³ÀÌ ¹®ÀÚÁýÇÕÀ̳ª ÄÝ·¹À̼ÇÀÌ ´Ù¸£´Ù¸é ºñ±³ ÀÛ¾÷¿¡¼­ ÄÝ·¹ÀÌ¼Ç º¯È¯ÀÌ ÇÊ¿ä
Çϱ⠶§¹®¿¡ À妽º¸¦ È¿À²ÀûÀ¸·Î ÀÌ¿ëÇÏÁö ¸øÇÒ ¶§°¡ ¸¹À¸¹Ç·Î ÁÖÀÇ°¡ ÇÊ¿äÇÏ´Ù.





---------- ij¸¯Åͼ º¯°æ ¹æ¹ý ---------------------------------------------------------------------------------

ij¸¯Åͼ ȮÀÎ

mysql> show varialbes like 'char%';


Àüü Àû¿ë

ÇöÀç daemonÀÇ mysql¿¡¸¸ Àû¿ëÇÒ °æ¿ì´Â set ¸í·ÉÀ» »ç¿ë

mysql> set names utf8;


Ç׸ñº° ¼¼ºÎ Àû¿ë

mysql> set character_set_database = 'utf8';

mysql> set character_set_connection = 'utf8';

mysql> set character_set_client = 'utf8';

mysql> set character_set_server = 'utf8';


À§ÀÇ ¸í·ÉÀº mysqlÀÌ Àç½ÃÀÛ µÇ¸é ´Ù½Ã ±âÁ¸ÀÇ ¼³Á¤À¸·Î ¹Ù²î¹Ç·Î

¿µ±¸ Àû¿ëÀ» Çϱâ À§Çؼ­´Â ¾Æ·¡¿Í °°Àº ¹æ¹ýÀ» »ç¿ëÇÑ´Ù.


µ¥ÀÌÅͺ£À̽º Àüü¿¡ Àû¿ë

mysql> alter database DB¸í character set utf8;

  

Å×ÀÌºíº° Àû¿ë

mysql> alter table Å×À̺í¸í default character set utf8;

mysql> alter table Å×À̺í¸í convert to character set utf8;


MySQLÀÇ È¯°æ¼³Á¤ ÆÄÀÏ my.cnf ¼öÁ¤À» ÅëÇÑ º¯°æ

 

# vi /etc/my.cnf

 

[client] ±¸¿ªÀ» ã¾Æ

default-character-set=utf8



 

[Ãâó] [MySQL] ij¸¯ÅͼÂ|ÀÛ¼ºÀÚ ÇÑ¿©¸§