2015-05-18 18 views
5

Tôi đang cố gắng lưu biểu tượng cảm xúc vào cơ sở dữ liệu trong máy chủ của mình. Tôi đang sử dụng AWS EC2 dụ như máy chủ, chi tiết máy chủ của tôi được liệt kê dưới đây:Biểu tượng cảm xúc không được lưu trữ đúng cách trong MySQL 5.6 với collation utf8mb4

OS: ubuntu0.14.04.1

MySQL phiên bản: 5.6.19-0ubuntu0.14.04.1 - (Ubuntu)

Cơ sở dữ liệu khách hàng phiên bản: libmysql - mysqlnd 5.0.11-dev - 20120503

tôi tạo ra một bài kiểm tra cơ sở dữ liệu và bảng biểu tượng cảm xúc trong máy chủ với SQL sau:

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; 

Khi tôi cố gắng thực hiện chèn sau, một cảnh báo xuất hiện và dữ liệu không được lưu trữ đúng cách:

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

chèn id hàng: 3

Cảnh báo: # 1366 giá trị chuỗi sai: ' \ xF0 \ x9F \ x91 \ x86 \ xF0 ... 'cho cột' văn ​​bản 'tại hàng 1

Giá trị được lưu trữ trong cột văn bản là: ???? ???? ???? ????

Kịch bản tương tự hoạt động với cơ sở dữ liệu cục bộ của tôi và các giá trị được lưu trữ đúng cách. Hầu như tất cả các cấu hình đều giống nhau ở địa phương của tôi ngoại trừ hệ điều hành (Windows).

+1

Vui lòng thực hiện 'HIỂN THỊ TABLE BIỂU TƯỢNG test.emoji \ G' - Tôi muốn xem nó có bị xáo trộn bằng cách nào đó không sau khi bạn tạo nó. –

+0

Wat bạn đã chạy câu lệnh 'INSERT' nào bị lỗi? (F09F9186 có vẻ chính xác.) –

+0

TẠO BIỂU TƯỢNG 'biểu tượng cảm xúc' ( ' id' int (10) unsigned NOT NULL AUTO_INCREMENT, 'text' varchar (255) NOT NULL, PRIMARY KEY (' id') ) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8mb4 –

Trả lời

1

Tôi đã có thể tạo lại sự cố của bạn bằng SqlWorkbench.

Bạn khách hàng rất có thể đã thiết lập một kết nối đến db mà bộ ký tự không phù hợp với bộ ký tự của bảng:

chạy tuyên bố này trước khi bạn chạy các câu lệnh insert để gắn kết các bộ ký tự và collation của kết nối:

SET NAMES utf8mb4 COLLATE utf8mb4_general_ci 

Hy vọng điều này sẽ giúp, bộ ký tự có thể phức tạp.

Các vấn đề liên quan