개발

파이썬, pymysql, mysql 이모티콘 \xF0\x9F\x98\x88 에러

동고킴 2022. 3. 3. 21:24
반응형

파이썬에서 pymysql 사용하여 mysql에 이모티콘 등록 시 오류가 발생하면 캐릭터셋을 설정해주면된다.

 

에러

  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.DataError: (1366, "Incorrect string value: '\\xF0\\x9F\\x91\\x89\\xF0\\x9F...' for column `test`.`book`.`description` at row 1")

 

 

my.cnf 파일에 캐릭터셋 설정

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

 

 

DB, Table, Column  캐릭터셋 설정

# DB 캐릭터셋 변경
ALTER DATABASE [DB] CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# TABLE 캐릭터셋 변경
ALTER TABLE [TABLE] CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# COLUMN 캐릭터셋 변경
ALTER TABLE [TABLE] CHANGE [COLUMN] [COLUMN] VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

 

DB 재시작

sudo service mysql restart

 

 

pymqslq charset 설정을 utf8mb4로 설정

conn = pymysql.connect(
    # charset='utf8',
    charset="utf8mb4",

 

참고 : https://88oy.tistory.com/435

반응형