Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1
? ? 這個(gè)問題,原因是UTF-8編碼有可能是兩個(gè)寺旺、三個(gè)、四個(gè)字節(jié)谬晕。Emoji表情或者某些特殊字符是4個(gè)字節(jié)啡浊,而Mysql的utf8編碼最多3個(gè)字節(jié),所以數(shù)據(jù)插不進(jìn)去卿捎。
我的解決方案是這樣的
[mysqld]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4
修改后重啟Mysql? ?如果最后一步還需要的話森枪,也要再次重新啟動(dòng)mysql哦视搏。
2. 將已經(jīng)建好的表也轉(zhuǎn)換成utf8mb4
命令:
更改數(shù)據(jù)庫編碼:ALTER DATABASE caitu99 CHARACTER SETutf8mb4COLLATEutf8mb4_general_ci;
alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin; (將TABLE_NAME替換成你的表名)
? ? ?然后就OK了。網(wǎng)上流傳的一個(gè)版本增加了一個(gè)步驟县袱,就是把mysql環(huán)境變量將character_set_client,character_set_connection,character_set_database,character_set_results,character_set_server 都修改成utf8mb4? 需要的話看下面這步:
3修改mysql配置文件my.cnf(windows為my.ini)
my.cnf一般在etc/mysql/my.cnf位置浑娜。找到后請?jiān)谝韵氯糠掷锾砑尤缦聝?nèi)容:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
參考文章:
http://blog.csdn.NET/likendsl/article/details/7530979