ํด๋น ํฌ์คํธ๋ MySQL 5.7.27 ๋ฒ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋์์ต๋๋ค.
๋ ํ์์ ์ด๋ชจ์ง๋ฅผ ์์ฃผ ์ด๋ค ๐ค. ๋ด๊ฐ ๊ด๋ฆฌํ๋ ๋ธ๋ก๊ทธ ์ ๋ชฉ์ฒ๋ผ, ํนํ ์ ๋ชฉ์ ์ฃผ๋ก ๋ถํ์ ์ฐ๊ณค ํ๋ค. ๊ทธ๋ฐ๋ฐ ์ด ์ด๋ชจ์ง๋ผ๋ ์น๊ตฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง ๋ง๋๋ฉด ๊ณจ์น ์ํ๊ฒ ๋ง๋ ๋ค. ์ต๊ทผ ๊ณจ์น ์ํ ๋ ๊ฒฝํ๊ณผ ํด๊ฒฐ ๋ฐฉ์์ ์ ์ด๋ณด๊ณ ์ ํ๋ค.
์ฐ๋ฆฌ๊ฐ ์ด์ผ๊ธฐํ๋ ์ ๋์ฝ๋๋ ๋๊ฐ UTF-8์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, UTF-8์ ์ํคํผ๋์์ ๋ฐ๋ฅด๋ฉด 1~4๋ฐ์ดํธ๋ฅผ ์ด์ฉํ๋ ๊ฐ๋ณ ๊ธธ์ด ๋ฌธ์ํ ํํ ๋ฐฉ์์ด๋ค. ๋ฌธ์ ๋ MySQL์ด utf8 ์ธ์ฝ๋ฉ์ MySQL์์ 3๋ฐ์ดํธ์ง๋ฆฌ ๊ฐ๋ณ ์ธ์๋ก ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ค. ๐คฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ธ์ฝ๋ฉ์ด utf8mb4
์ด๊ณ , ๋๊ฐ ์ด๋ชจ์ง ๊ด๋ จํ ๋ฌธ์ ๋ ํด๊ฒฐ ๋๋ค.
๋ด๊ฐ ๋ง์ฃผํ ๋ฌธ์ ๋ ์ด๊ฒ๊ณผ ์กฐ๊ธ ๋ฌ๋๋ค. ์ด์ฉ๋ค๋ณด๋ ์ด๋ชจ์ง๊ฐ ํฌํจ๋ ๋ฌธ์์ด์ ์ฟผ๋ฆฌํด์ผ ํ๋ ์ผ์ด ์๊ฒผ๋๋ฐ, ์ด๋ชจ์ง '๋ง' ์๋ ๋ฌธ์์ด์ ์ฟผ๋ฆฌํ ๋์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๋ค์๊ณผ ๊ฐ์ row๊ฐ ์๋ ํ๋์์, title
์ด ๐ค
์ธ Row๋ง ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํด ๋ฐ์์ค๊ณ ์ถ์๋ค.
๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ธ๊ณ , ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์๋ค
SELECT * FROM collate_test WHERE title='๐ค';
๋ญ๊ฐ ์ด์ํ๋ค. ํ๋๋ง ๋ฆฌํด๋์ด์ผ ํ๋๋ฐ, ์ด๋ชจ์ง์ ๊ฐ์๊ฐ ๊ฐ์ ๋ชจ๋ row๊ฐ ๋ฐํ๋์๋ค.
๋ค์๊ณผ ๊ฐ์ด ์คํํ๋ฉด ์ด๋ชจ์ง 2๊ฐ์ธ ๋ชจ๋ row๊ฐ ๋ฐํ๋๋ค.
SELECT * FROM collate_test WHERE title='๐ค๐';
MySQL์๋ ๋ฌธ์์ด์ ๋ค๋ฃจ๋ ์์ฑ์ด ํฌ๊ฒ character set๊ณผ collation์ด ์๋๋ฐ, utf8mb4์ ๊ธฐ๋ณธ collation์ด utf8mb4_general_ci, case-insentive collation์ด๊ธฐ ๋๋ฌธ์ ์๊ธฐ๋ ๋ฌธ์ ์ด๋ค.
MySQL์ collation์ด๋ ๋ฌธ์์ด์ mysql์์ ์ด๋ป๊ฒ ๋ค๋ฃจ๋ ค ํ๋์ง์ ๋ํ ์ค์ ์ด๋ค. ์ด๋ฅผ ci (case-insentive) ๋ก ์ค์ ํ๊ฒ ๋๋ฉด, ๋ฌธ์์ด์ binary ๊ทธ๋๋ก ๋น๊ตํ์ง ์๊ณ ๋๋ฆ์ ๊ท์น์ ์ธ์ ๋น๊ตํ๊ฒ ๋๋ค.
๋ฌธ์ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ utf8mb4_general_ci๋ utf8mb4_unicode_ci ๋ชจ๋ ์ด๋ชจ์ง๋ฅผ ๊ฐ์ ๋ฌธ์๋ก ๊ฐ์ ํ๊ณ ๋น๊ตํ๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ์์ฒ๋ผ ์ด๋ชจ์ง๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ ๊ฒฝ์ฐ, ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ๊ฐ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ๋ฐํํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
ํด๋น ๋ฌธ์ ๋ฅผ SQL๋จ์์ ํด๊ฒฐํ๊ณ ์ ํ๋ค๋ฉด, ํด๋น ํ
์ด๋ธ์ collate๋ฅผ utf8mb4_bin
์ผ๋ก ๋ณ๊ฒฝํด ์ฃผ๋ฉด ๋๋ค.
ALTER TABLE collate_test
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
์ดํ ์ ์์ ์ผ๋ก ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
SELECT * FROM collate_test WHERE title='๐ค';
์ฟผ๋ฆฌ์์๋ง ์ฌ์ฉํ์ง๋ง, ๋ง์ผ ์ด์ฉ๋ค ๋ณด๋ emoji๊ฐ ํฌํจ๋ ์ฟผ๋ฆฌ์ Unique๋ฅผ ๊ฑธ ์ผ์ด ์๊ธด๋ค๋ฉด ์ฌ์ ์ ์ค์๋์ ๋ฐฉ์งํ ์ ์๋ค. collate ๊ธฐ์ค์ ์ด์ฉํ์ฌ unique ํ์ง ํ๋จํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ข์ ํฌ์คํ ๊ฐ์ฌํฉ๋๋ค. ์ ๋ ์ฌ์ดํธ ํ๋ก์ ํธ ํ๋ฉด์ ์ด๋ชจ์ง๋ก๋ง ์ด๋ฃจ์ด์ง ์นผ๋ผ์ด ์์๋๋ฐ, ์ด์ํ๊ฒ ์ค๋ณต ์ค๋ฅ๊ฐ ๋จ๋๋ผ๊ณ ์. ๋๋ถ์ ํด๊ฒฐํ์์ต๋๋ค. :)