ÃֽŠ°Ô½Ã±Û(DB)
2017.03.11 / 16:35
MySQL¿¡¼ ¹®ÀÚ¼Â(Character Set)°ú CollationÀÇ Â÷ÀÌ
Mans
Ãßõ ¼ö 308
- ¹®ÀÚ¼Â(Character Set)
- ¸» ±×´ë·Î ƯÁ¤ '¹®ÀÚ(Á» ´õ Á¤È®È÷´Â symbol)'°¡ ÄÄÇ»ÅÍ¿¡ ÀúÀåµÉ ¶§ ¾î¶°ÇÑ 'ÄÚµå'·Î ÀÎÄÚµùµÇ¾î ÀúÀåµÉ °ÍÀÎÁö¿¡ ´ëÇÑ ±ÔÄ¢ÀÌ Á¤ÀǵǾîÀÖ´Â ÁýÇÕÀ» ¸»ÇÔ. (A character set is a set of symbols and encodings.)
- ´ëÇ¥ÀûÀÎ °ÍÀ¸·Î´Â ASCII, ÇѱÛÀ» Áö¿øÇÏ´Â EUC-KR, À¯´ÏÄÚµå UTF-8, UTF-16 µîÀÌ ÀÖÀ½.
- ¹®ÀÚ¼ÂÀº ÀÚ½ÅÀÌ Ã³¸®ÇÒ ¹®ÀÚ ÁýÇÕÀÌ ¾ó¸¶³ª Å«°¡¿¡ µû¶ó ÇϳªÀÇ '¹®ÀÚ'¸¦ ÀúÀåÇϴµ¥ ÇÊ¿äÇÑ ÀúÀå°ø°£ÀÇ Å©±â°¡ ´Þ¶óÁö°Ô µÈ´Ù. ¶ÇÇÑ Ç×»ó ¸ðµç ¹®ÀÚµéÀ» µ¿ÀÏÇÑ Å©±â·Î ÀÎÄÚµùÇÏ´Â °íÁ¤Æø ¹æ½ÄÀÇ ¹®ÀÚ¼ÂÀÌ Àִ°¡Çϸé, EUC-KR(1~2¹ÙÀÌÆ®)À̳ª UTF-8(1~3¹ÙÀÌÆ®)°ú °°ÀÌ °¡º¯Æø ¹æ½ÄÀÇ ÀÎÄÚµùÀ» »ç¿ëÇÏ´Â ¹®Àڼµµ ÀÖ´Ù.
- ÄÝ·¹À̼Ç(Collation)
- ÀÌ°ÍÀº ƯÁ¤ ¹®Àڼ¿¡ ÀÇÇØ µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÈ °ªµéÀ» °Ë»öÇϰųª Á¤·Ä µîÀÇ ÀÛ¾÷À» À§ÇØ ¹®Àڵ鰣¿¡ ¼·Î 'ºñ±³'ÇÒ¶§ »ç¿ëÇÏ´Â ±ÔÄ¢µéÀÇ ÁýÇÕÀÌ´Ù. (A collation is a set of rules for comparing characters in a character set.) µû¶ó¼, ÀϹÝÀûÀÎ Data Type¿¡´Â Àû¿ëµÇÁö ¾Ê°í, CHAR, VARCHAR, TEXT¿Í °°Àº µ¥ÀÌÅÍ Å¸ÀÔÀ» °¡Áö´Â Ä®·³µé¿¡ ´ëÇؼ¸¸ Àû¿ëµÈ´Ù.
- ÁÖ·Î ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏ´Â binary Çü½ÄÀ» »ç¿ëÇÒ °ÍÀÎÁö, ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â Case Insensitive Çü½ÄÀ» »ç¿ëÇÒ °ÍÀÎÁö·Î ³ª´©¾îÁø´Ù. Case Insensitive Çü½ÄÀ» »ç¿ëÇÏ´Â collationµéÀº ¸ðµÎ collation À̸§ÀÇ ³¡¿¡ 'ci'¶ó´Â ¹®ÀÚ°¡ ºÙ¾îÀÖ´Ù.
[Âü°í]
- Ưº°È÷, MySQL¿¡¼ÀÇ ¹®Àڼ°ú collation ¿¡ ´ëÇÑ ¹®Á¦´Â ´Ü¼øÈ÷ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â °ø°£¿¡ ´ëÇÑ °üÁ¡¸¸ÀÌ ¾Æ´Ï¶ó, MySQL ¼¹ö¿Í MySQL ¼¹ö¿¡°Ô ¿äûÀ» Çϴ Ŭ¶óÀ̾ðÆ® »çÀÌ¿¡ ÁÖ°í¹Þ´Â »óÈ£ÀÛ¿ë¿¡ ´ëÇÑ °üÁ¡±îÁöµµ Æ÷ÇÔÇÑ´Ù´Â °ÍÀ» ²À ±â¾ïÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.
- µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â °üÁ¡ : MySQLÀº Server ·¹º§, Database ·¹º§, Table ·¹º§, Column ·¹º§±îÁö ÃÑ 4°³ÀÇ ·¹º§À» Áö¿øÇϴ Ư¡À» °¡Áö°í ÀÖÀ½.
- ¼¹ö¿Í Ŭ¶óÀ̾ðÆ®°£ÀÇ »óÈ£ÀÛ¿ë °üÁ¡ : MySQLÀº ÀÌ °üÁ¡¿¡¼ ¹®Àڼ°ú °ü·ÃÇÑ ÃÑ 3°³ÀÇ ¼·Î ´Ù¸¥ ŸÀÔÀ» Á¦°øÇÑ´Ù.
- character_set_client : Ŭ¶óÀ̾ðÆ®¿¡¼ ¹®ÀåÀÌ ¶°³¯ ¶§ ÇØ´ç ¹®ÀåÀº ¾î¶² ¹®ÀÚ¼ÂÀ¸·Î ÀÌ·ç¾îÁ®Àִ°¡ÀÇ ¹®Á¦
- character_set_connection : Ŭ¶óÀ̾ðÆ®¿¡¼ ³Ñ¾î¿Â ¹®ÀåÀ» ¼¹ö¿¡¼´Â ¾î¶² ¹®ÀÚ¼ÂÀ» ±âÁØÀ¸·Î Çؼ®ÇؾßÇϴ°¡ÀÇ ¹®Á¦.
- character_set_results : ¼¹ö¿¡¼ Ŭ¶óÀ̾ðÆ®·Î ÀÀ´äÀ» ³Ñ°ÜÁÙ¶§ ¾î¶² ¹®ÀÚ¼ÂÀ¸·Î ³Ñ°Ü¾ßÇϴ°¡ÀÇ ¹®Á¦.
- µû¶ó¼, µ¥ÀÌÅͺ£À̽º ·¹º§¿¡¼ euckr ¹®ÀÚ¼ÂÀÌ ±âº»°ªÀ¸·Î ÁöÁ¤µÇ¾îÀÖ´Â µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÑ ÈÄ ÇØ´ç µ¥ÀÌÅͺ£À̽º¿¡ µ¥ÀÌÅ͸¦ Àß ÀÔ·ÂÇÏ¿´´Âµ¥ ÀÌ»óÇÏ°Ô ºê¶ó¿ìÀú·Î ³Ñ±â¸é µ¥ÀÌÅͺ£À̽º¿¡¼ Àоî¿Â ¹®ÀÚ¸¸ ±ÛÀÚ°¡ ±úÁö´Â »óȲÀÌ ¹ú¾îÁø´Ù¸é(ºê¶ó¿ìÀúÀÇ ÀÎÄÚµù ¼³Á¤ µîÀº Á¤»óÀûÀ̶ó°í °¡Á¤) ´ÙÀ½°ú °°ÀÌ Ã¼Å©ÇغÁ¾ß ÇÑ´Ù.
- Database ·¹º§, Table ·¹º§, Column ·¹º§¿¡¼ ¿øÇÏ´Â ¹®ÀÚ¼ÂÀ¸·Î Àß ÁöÁ¤µÇ¾îÀÖ´ÂÁö¸¦ È®ÀÎ
- client, connection, results ¿¡¼ÀÇ ¹®Àڼµµ ÀûÀýÇÏ°Ô ÁöÁ¤µÇ¾îÀÖ´ÂÁö¸¦ È®ÀÎ. (´ë°³ ±ÛÀÚ°¡ ±úÁö´Â °æ¿ì¶ó¸é, ¾Æ¸¶µµ ÀÌÂÊÀÌ À߸ø ÁöÁ¤µÇ¾îÀÖÀ» °¡´É¼ºÀÌ ³ô´Ù)
- SQL ¹®Àå Áß¿¡ 'SET NAMES euckr [COLLATE collation_name]'À» »ç¿ëÇÏ¸é ¾Õ¿¡¼ »ìÆ캻 client, connection, results 3°¡Áö¿¡ ´ëÇÑ ¹®ÀÚ¼ÂÀ» ÇѲ¨¹ø¿¡ ÁöÁ¤ÇØÁÙ ¼ö ÀÖÀ½. (¼¹ö ½ÇÇàÁß¿¡µµ º¯°æÀÌ °¡´É. ´Ü, ¼¹ö ½ÇÇàÁß¿¡ SQL ¹®ÀåÀ¸·Î º¯°æÇÏ´Â °ÍÀº ¿µ±¸ º¯°æÀÌ ¾Æ´Ï¶ó ÇöÀç ¿¬°á¿¡ ÇÑÇؼ¸¸ Àӽ÷Πº¯°æÇÏ´Â °ÍÀÓ)
- Àӽà º¯°æÀÌ ¾Æ´Ñ ¿µ±¸ º¯°æÀ» ÇÏ·Á¸é, MySQL ¼¹ö°¡ óÀ½ ½ÃÀÛÇÒ ¶§ Âü°íÇÏ´Â my.cnf ȯ°æ¼³Á¤ ÆÄÀϳ»¿¡ 'init_connect=SET NAMES euckr' ÀÌ·±½ÄÀ¸·Î ÁöÁ¤ÇØµÎ¸é µÊ.
- ÀÌ·¸°Ô ¿µ±¸ º¯°æ°ú Àӽà º¯°æ ¹æ¹ýÀ» È°¿ëÇϸé Á» ´õ ´Ù¾çÇÑ ÀÀ¿ëÀÌ °¡´ÉÇØÁø´Ù.
- ¼¹ö°¡ ½ÃÀÛÇÏ´Â ´Ü°è¿¡¼ ÁöÁ¤ÇÏ´Â °æ¿ì : ´ë°³ ȯ°æ¼³Á¤ ÆÄÀÏÀÎ my.cnf ÆÄÀÏ¿¡¼ 'init_connect=SET NAMES euckr' ¸í·É¾î·Î ÁöÁ¤. ÀÌ·¸°Ô ÇßÀ»¶§´Â ÇØ´ç ¼¹ö¸¦ »ç¿ëÇÏ´Â ¸ðµç ¾ÖÇø®ÄÉÀ̼ǵ鿡°Ô ÀÌ ¼³Á¤ÀÌ ±âº»°ªÀ¸·Î¼ÀÇ ¿µÇâÀ» ¹ÌÄ£´Ù.
- ½ÃÀÛ ´Ü°è°¡ ¾Æ´Ï¶ó ¼¹ö°¡ ½ÇÇàÁß¿¡ µ¥ÀÌÅͺ£À̽º º°·Î ´Ù¸¥ ¹®ÀÚ¼ÂÀ» »ç¿ëÇϵµ·Ï ÁöÁ¤ÇÏ´Â °æ¿ì : ÀÏ´Ü Å¬¶óÀ̾ðÆ®°¡ ¼¹ö·Î ¿¬°áÀ» ÇÑ ÀÌÈÄ¿¡ °ð¹Ù·Î 'SET NAMES euckr' ¸í·É¾î¸¦ ½ÇÇà½ÃÄѼ ÇöÀç ¿¬°á¿¡ ´ëÇÑ ¿¬°á °ü·Ã ¹®ÀڼµéÀ» ¼öÁ¤Çسõ°í ½ÃÀÛÇÑ´Ù. ÀÌ·¸°Ô Çϸé, °¢°¢ÀÇ µ¥ÀÌÅͺ£À̽ºº°·Î ¼·Î ´Ù¸¥ ¿¬°á °ü·Ã ¹®ÀÚ¼ÂÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ°Ô µÊ(!!!)
- Áï, µ¿ÀÏÇÑ ¼¹ö³»¿¡¼ ´ëºÎºÐÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀº utf-8 ¹®ÀÚ¼ÂÀ» »ç¿ëÇϴµ¥ ƯÁ¤ ¾ÖÇø®ÄÉÀ̼Ǹ¸ euckr ¹®ÀÚ¼ÂÀ» »ç¿ëÇÏ°íÀÚ ÇÒ °æ¿ì¿¡ À§¿Í °°Àº ¹æ¹ýÀ» »ç¿ëÇÏ¸é °¡´É.
- Âü°í·Î, PHP¿¡¼ »ç¿ëÇÏ´Â mysqli È®Àå¿¡¼´Â 'SET NAMES ...'¸¦ query ¸Þ¼Òµå·Î ½ÇÇà½ÃÅ°´Â ¹æ¹ý ÀÌ¿Ü¿¡ 'set_charset' À̶ó´Â ´õ ³ªÀº ¸Þ¼Òµå¸¦ ÅëÇؼ µ¿ÀÏÇÑ È¿°ú¸¦ ¾òÀ» ¼öµµ ÀÖÀ½.
- (Áú¹®) PHPMyAdmin¿¡¼ »õ·Î¿î µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÒ ¶§, ÇØ´ç µ¥ÀÌÅͺ£À̽º¿¡¼ »ç¿ëÇÒ Default collation ¸¸À» ÁöÁ¤ÇÏ°Ô µÇ´Âµ¥... ±×·¸´Ù¸é, ÇØ´ç µ¥ÀÌÅͺ£À̽ºÀÌ Default Character SetÀº ¾î¶»°Ô µÇ´Â °ÍÀϱî?
- (´ë´ä) ¹¹... ´ç¿¬ÇÑ À̾߱â°ÚÁö¸¸, Default collation ¸¸À» ÁöÁ¤ÇÏ°Ô µÇ¸é ÇØ´ç collationÀÌ ¼ÓÇØÀÖ´Â Character SetÀÌ ÀÚµ¿À¸·Î ±× µ¥ÀÌÅͺ£À̽ºÀÇ Default Character SetÀ¸·Î ÁöÁ¤µÊ. ¹°·Ð, PHPMyAdminÀÇ GUI ¹æ½ÄÀ» »ç¿ëÇÏÁö ¾Ê°í, Á÷Á¢ DDL ¹®ÀåÀ» »ç¿ëÇϸé Çϳª Çϳª º°µµ·Î ÁöÁ¤ÇØÁÙ ¼öµµ ÀÖÀ½. ¶ÇÇÑ, PHPMyAdmin¿¡¼ µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÒ ¶§, Default collation Á¶Â÷µµ ÁöÁ¤ÇÏÁö ¾Ê°Ô µÇ¸é, ´ç¿¬È÷ MySQLÀÇ È¯°æ¼³Á¤ ÆÄÀÏÀÎ my.cnf(¶Ç´Â my.ini)¿¡¼ ÁöÁ¤µÇ¾îÀÖ´Â ½Ã½ºÅÛÀÇ ±âº»ÀûÀÎ Character SetÀÌ Àû¿ëµÇ°Ô µÇ¸ç CollationÀº ÇØ´ç Character SetÀÇ Default collationÀÌ Àû¿ëµÇ°Ô µÊ.
[Ãâó] MySQL¿¡¼ ¹®ÀÚ¼Â(Character Set)°ú CollationÀÇ Â÷ÀÌ|ÀÛ¼ºÀÚ ÀÚÀ¯¿©Çà