[MySQL] ij¸¯ÅͼÂ
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¸¯ÅͼÂ|ÀÛ¼ºÀÚ ÇÑ¿©¸§