파이썬 mysql 연결 모듈을 사용하여 유니 코드 문자 점 128049 (U + 1F431)를 mariaDB sql 테이블에 삽입하고 있습니다.잘못된 문자열 값 오류 - Python + mariaDB
은 내 SQL 테이블은 다음과 같이 정의된다 :
show create table t1;
CREATE TABLE `t1` (
`c1` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
그리고 파이썬 코드는 다음과 같습니다이 이후
import mysql.connector as db
conn = db.connect(sql_mode = 'STRICT_ALL_TABLES')
curs = conn.cursor(prepared = True)
curs.execute('insert into t1 (c1) values(%)', chr(128049))
는 4 바이트를 필요로하는 plane 1 unicode value이지만, 테이블 및 열을 변경하면 as suggested here을 utf8mb4하기 작동하지 않았다.
내가 갖는 오류 : 삽입되는
Incorrect string value: '\xF0\x9F\x90\xB1' for column 'c1' at row 1
문자열이 올바른 모습에 비해 :
chr(128049).encode('utf-8')
mariadb이 버전의 sql_mode는 기본적으로 엄격한되지 않습니다. 엄격 모드를 지정하지 않으면 삽입이 작동하는 동안 문자는 기본값 '?'으로 변환됩니다. 캐릭터.
SQL이 잘못된 문자열이라고 생각하는 이유를 알 수 없습니다.
파이썬 3.6.1에서 mysql-connector 2.1.4를 통해 mariadb 10.1.9에 연결 중입니다.