我正在尝试将表情符号存储到我服务器中的数据库中。我使用AWS EC2实例作为服务器,我的服务器详细信息如下:
操作系统:ubuntu0.14.04.1
MySQL版本:5.6.19-0ubuntu0.14.04.1 - (Ubuntu)
数据库客户端版本:libmysql - mysqlnd 5.0.11-dev - 20120503
我在服务器中使用以下SQL创建了一个数据库测试和表格表情符号:
2015-06-15T09:00:00+09:00
当我尝试执行以下插入时,会出现警告并且数据未正确存储:
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;
插入的行ID:3
警告:#1366字符串值不正确:' \ xF0 \ x9F \ x91 \ x86 \ xF0 ......'对于专栏' text'在第1行
文本列中存储的值为: ???? ???? ???? ????
我的本地数据库使用相同的方案,并正确存储值。除了操作系统(Windows)之外,我的本地几乎所有配置都相似。
答案 0 :(得分:3)
我能够使用SqlWorkbench重新创建您的问题。
您的客户端很可能已建立与其字符集与表的字符集不匹配的数据库的连接:
在运行insert语句以对齐字符集和连接的排序规则之前运行此语句:
SET NAMES utf8mb4 COLLATE utf8mb4_general_ci
希望这会有所帮助,字符集可能会很棘手。
答案 1 :(得分:0)
尝试使用以下堆栈Node-Js 12.13.x和Mysql 5.6将表情符号保存在我现有的数据库表中。
方法:
ALTER TABLE table_name CHANGE column column BLOB NULL
希望这个技巧对您有用!
答案 2 :(得分:-1)
使用工作台从MSSQL迁移到MySQL总是遇到问题。
工作台已经设置了utf8mb4,并且仍然出现错误。
然后我遵循@Haisum Usman的建议:
投入大量时间来使它工作。