Cod*_*elp 5 mysql collation character-encoding emoji utf8mb4
我试图将表情符号存储到我的服务器中的数据库中.我使用AWS EC2实例作为服务器,我的服务器详细信息如下:
操作系统: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;
Run Code Online (Sandbox Code Playgroud)
当我尝试执行以下插入时,会出现警告并且数据未正确存储:
INSERT INTO `test`.`emoji` (`id` , `text`) VALUES (NULL , ' ');
Run Code Online (Sandbox Code Playgroud)
插入的行ID:3
警告:#1366字符串值不正确:'\ xF0\x9F\x91\x86\xF0 ...'代表第1行的'text'列
存储在文本列中的值为:???? ???? ???? ????
相同的方案适用于我的本地数据库,并且值正确存储.除了操作系统(Windows)之外,我的本地几乎所有配置都相似.
小智 5
我能够使用 SqlWorkbench 重新创建您的问题。
您的客户端很可能已经建立了到字符集与表字符集不匹配的数据库的连接:
在运行 insert 语句之前运行此语句以对齐连接的字符集和排序规则:
SET NAMES utf8mb4 COLLATE utf8mb4_general_ci
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助,字符集可能很棘手。
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |