2015-05-18 14 views
5

我試圖將表情符號存儲到我的服務器中的數據庫中。我使用AWS EC2實例作爲服務器,我的服務器的詳細信息如下所列:表情符號在MySQL 5.6中沒有正確存儲,並帶有排序規則utf8mb4

OS:ubuntu0.14.04.1

MySQL版本:5.6.19-0ubuntu0.14.04.1 - (Ubuntu的)

數據庫客戶端版本的libmysql - mysqlnd 5.0.11-dev的 - 20120503

我創建了服務器數據庫測試表的表情符號具有以下SQL:

CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 
USE `test`; 

CREATE TABLE IF NOT EXISTS `emoji` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `text` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1; 

當我試圖執行以下插入,會出現一個警告和數據存放不當:

INSERT INTO `test`.`emoji` (`id` , `text`) VALUES (NULL , ' '); 

插入行ID:3

警告:#1366不正確的字符串值:' \ XF0 \ x9F \ X91 \ 86 \ XF0 ...」列 '存儲在文本列在第1行

值文本' 是:???? ???? ???? ????

我的本地數據庫的相同場景工作和值正確存儲。除了操作系統(Windows),幾乎所有的配置在我的本地都很相似。

+1

請做'SHOW CREATE TABLE test.emoji \ G' - 我想知道它在創建後是否被破壞了。 –

+0

Wat什麼提示你運行失敗的INSERT? (該F09F9186看起來是正確的。) –

+0

CREATE TABLE'emoji'( 'id' INT(10)無符號NOT NULL AUTO_INCREMENT, 'text' VARCHAR(255)NOT NULL, PRIMARY KEY('id') )ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8mb4 –

回答

1

我能夠使用SqlWorkbench重新創建您的問題。

你的客戶很可能已經建立了它的字符集不匹配的字符集表的數據庫的連接:您運行的INSERT語句對齊字符集之前

運行這一說法,並整理的連接:

SET NAMES utf8mb4 COLLATE utf8mb4_general_ci 

希望這可以幫助,字符集可以是棘手的。