━━━━ ◇ ━━━━
-/mysql

[MYSQL] 데이터베이스에 이모티콘 입력하기

👀 MySQL에 이모티콘 입력

MySQL 데이터베이스에 이모티콘을 입력하는 방법을 알아본다

✔ 문제점

  1. MySQL Database에 이모티콘을 넣으려고 하자 입력이 되지 않는 문제가 발생했다.
//해당 문장을 입력
INSERT INTO `guest` VALUES (3, 'Hello','😇💙',NOW(),'박우현');
//아래와 같이 출력되며 정상적으로 입력이 실핼 X
mysql> INSERT INTO `guest` VALUES (3, 'Hello','��',NOW(),'박우현');
    '>

✔ 시도

  1. 데이터의 타입을 blob으로 바꾸어 보았으나 정상적으로 동작하지 않았다.
//기존
+-------------+-------------+------+-----+---------+----------------+  
| Field | Type | Null | Key | Default | Extra |  
+-------------+-------------+------+-----+---------+----------------+  
| id | int | NO | PRI | NULL | auto\_increment |  
| title | varchar(30) | NO | | NULL | |  
| description | text | YES | | NULL | |  
| created | datetime | NO | | NULL | |  
| author | varchar(30) | YES | | NULL | |  
+-------------+-------------+------+-----+---------+----------------+

ALTER TABLE guest MODIFY description blob;  
//변경 후  
+-------------+-------------+------+-----+---------+----------------+  
| Field | Type | Null | Key | Default | Extra |  
+-------------+-------------+------+-----+---------+----------------+  
| id | int | NO | PRI | NULL | auto\_increment |  
| title | varchar(30) | NO | | NULL | |  
| description | blob | YES | | NULL | |  
| created | datetime | NO | | NULL | |  
| author | varchar(30) | YES | | NULL | |  
+-------------+-------------+------+-----+---------+----------------+
  1. 데이터베이스의 인코딩을 utf8mb4로 변경하였으나 정상적으로 동작하지 않았다.
ALTER DATABASE guest CHARACTER SET = utf8mb4 COLLATE = utf8mb4\_unicode\_ci;
  1. my.cnf, 또는 my.ini의 설정을 변경하라고 해서 찾아보았지만 해당 파일들이 존재하지 않았다.
//cmd창에 입력  
mysqld --help --verbose

//결과
...  
Default options are read from the following files in the given order:  
C:\\WINDOWS\\my.ini C:\\WINDOWS\\my.cnf C:\\my.ini C:\\my.cnf C:\\Program Files\\MySQL\\MySQL Server 8.0\\my.ini C:\\Program Files\\MySQL\\MySQL Server 8.0\\my.cnf  
...

//해당 디렉토리를 모두 찾아보았으나 아무런 파일도 존재하지 않았다.
  1. show variables like 'c%'를 이용해 utf8임을 확인하였다.
mysql> show variables like 'c%';  
+----------------------------------------------+---------------------------------------------------------+  
| Variable\_name | Value |  
+----------------------------------------------+---------------------------------------------------------+  
| caching\_sha2\_password\_auto\_generate\_rsa\_keys | ON |  
| caching\_sha2\_password\_private\_key\_path | private\_key.pem |  
| caching\_sha2\_password\_public\_key\_path | public\_key.pem |  
| character\_set\_client | utf8mb4 |  
| character\_set\_connection | utf8mb4 |  
| character\_set\_database | utf8mb4 |  
| character\_set\_filesystem | binary |  
| character\_set\_results | utf8mb4 |  
| character\_set\_server | utf8mb4 |  
| character\_set\_system | utf8 |  
| character\_sets\_dir | C:\\Program Files\\MySQL\\MySQL Server 8.0\\share\\charsets\\ |  
| check\_proxy\_users | OFF |  
| collation\_connection | utf8mb4\_0900\_ai\_ci |  
| collation\_database | utf8mb4\_unicode\_ci |  
| collation\_server | utf8mb4\_0900\_ai\_ci |  
| completion\_type | NO\_CHAIN |  
| concurrent\_insert | AUTO |  
| connect\_timeout | 10 |  
| core\_file | OFF |  
| create\_admin\_listener\_thread | OFF |  
| cte\_max\_recursion\_depth | 1000 |  
+----------------------------------------------+---------------------------------------------------------+

✔ 해결방안

  1. 데이터베이스를 utf8mb4로 생성 또는 변경
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
CREATE DATABASE database_name DEFAULT CHARSET = utf8mb4 DEFAULT COLLATE = utf8mb4_unicode_ci;
  1. Connection을 생성할 때 charset을 utf8mb4로 설정
let db = mysql.createConnection({
host    : 'localhost',
user    : 'root',
password: 'zxcvZXCV',
database: 'myPage',
charset : 'utf8mb4'
});


'- > mysql' 카테고리의 다른 글

[MYSQL] MySQL 사용법  (0) 2021.01.14
COMMENT