문자열을 데이터베이스에 삽입하고 있지만 잘못된 문자열 바이트 시퀀스에 대해 MySQL 1366 오류가 발생합니다. 난 아직도 무엇을 놓치고Golang MySQL 1366 잘못된 문자열 값 오류
db, err = sql.Open("mysql", config.User+":"+config.Password+"@tcp("+config.Host+")/"+config.Database)
if err != nil {
log.Fatal(err)
}
db.Exec("SET NAMES 'utf8mb4'; SET CHARACTER SET utf8mb4;")
:
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| 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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
내 데이터베이스 연결 풀은 다음과 같습니다 : 아래 그림과 같이
2016/11/04 13:33:40 Error 1366: Incorrect string value: '\x89PNG\x0D\x0A...' for column 'text' at row 1
2016/11/04 13:33:56 Error 1366: Incorrect string value: '\xB6\xEB\xE4\x0B\x92\xEE...' for column 'text' at row 1
2016/11/04 13:33:56 Error 1366: Incorrect string value: '\xFF\xD8\xFF\xE0\x00\x10...' for column 'text' at row 1
2016/11/04 13:34:35 Error 1366: Incorrect string value: '\x9C]\x91\xD1k\xC2...' for column 'text' at row 1
내 MySQL의 설정은 utf8mb4 설정되어?
나는 같은 문제가 있었는데 어떻게 든 제어 문자가 문자열에 도입되었다는 것을 알게되었습니다. (특히 웹 페이지의 입력 필드에 MS-Word의 _formatted_ 텍스트를 복사 할 때). 필자의 경우 해결책은 클라이언트 측에서 제어 문자를 필터링하는 것이 었습니다. – FDavidov