[MySQL] Problem? 데이터베이스에 이모티콘 입력하기

박우현·2021년 1월 11일
0
post-thumbnail

✔ 문제점

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                                                    |
+----------------------------------------------+---------------------------------------------------------+

✔ 해결방안

콘솔에 ��와 같이 출력되는 것으로 보아 콘솔의 문제인가 싶다.

mysql> INSERT INTO `guest` VALUES (3, 'Hello','��',NOW(),'박우현');

아시는 고수님들 도와주세요...ㅠㅠ

0개의 댓글