👀 MySQL에 이모티콘 입력
MySQL 데이터베이스에 이모티콘을 입력하는 방법을 알아본다
✔ 문제점
- MySQL Database에 이모티콘을 넣으려고 하자 입력이 되지 않는 문제가 발생했다.
//해당 문장을 입력
INSERT INTO `guest` VALUES (3, 'Hello','😇💙',NOW(),'박우현');
//아래와 같이 출력되며 정상적으로 입력이 실핼 X
mysql> INSERT INTO `guest` VALUES (3, 'Hello','��',NOW(),'박우현');
'>
✔ 시도
- 데이터의 타입을
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 | |
+-------------+-------------+------+-----+---------+----------------+
- 데이터베이스의 인코딩을
utf8mb4
로 변경하였으나 정상적으로 동작하지 않았다.
ALTER DATABASE guest CHARACTER SET = utf8mb4 COLLATE = utf8mb4\_unicode\_ci;
-
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
...
//해당 디렉토리를 모두 찾아보았으나 아무런 파일도 존재하지 않았다.
-
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 |
+----------------------------------------------+---------------------------------------------------------+
✔ 해결방안
- 데이터베이스를 utf8mb4로 생성 또는 변경
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
CREATE DATABASE database_name DEFAULT CHARSET = utf8mb4 DEFAULT COLLATE = utf8mb4_unicode_ci;
- Connection을 생성할 때 charset을 utf8mb4로 설정
let db = mysql.createConnection({
host : 'localhost',
user : 'root',
password: 'zxcvZXCV',
database: 'myPage',
charset : 'utf8mb4'
});
'- > mysql' 카테고리의 다른 글
[MYSQL] MySQL 사용법 (0) | 2021.01.14 |
---|