首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >utf8mb4在MySQL工作台和JDBC中的应用

utf8mb4在MySQL工作台和JDBC中的应用
EN

Stack Overflow用户
提问于 2017-06-16 14:33:56
回答 4查看 25.9K关注 0票数 9

我一直在使用一个UTF-8编码的MySQL DB,它现在需要能够存储4字节的表情符号,所以我决定将utf8编码改为utf8mb4:

代码语言:javascript
复制
ALTER DATABASE bstdb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE HISTORY CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE HISTORY CHANGE SOURCE_CONTEXT SOURCE_CONTEXT VARCHAR(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;

并将mysql.conf.d“字符集-服务器= utf8”改为“字符集-服务器= utf8mb4”

在这些步骤之后,我可以存储emojis (as ),但只有在MySQL控制台中执行MySQL查询时才能存储:当我试图从MySQL工作台或野生蝇when应用程序启动查询时,我会得到以下错误:

错误代码: 1366。不正确的字符串值:'\xF0\x9F\x92\xA2‘用于第1行的“SOURCE_CONTEXT”列

我想我需要改变客户端连接到DB的方式,但我不知道如何连接。我读过一些关于在JDBC中使用"useUnicode=yes“的文章,但是不起作用。

${bdpath:3306/bstdb?useUnicode=yes}

编辑:正如评论中所建议的,我尝试过:

${bdpath:3306/bstdb?字符编码=UTF-8}

但是没有运气,我得到了相同的“不正确的字符串值:'\xF0\x9F\x92\xA2'”错误。

也试过

${bdpath:3306/bstdb?useUnicode=true&characterEncoding=utf8mb4&}

但它拒绝建立一种联系。

对如何配置MySQL工作台和/或JDBC/Wildfly有什么想法吗?

MySQL版本为5.7.18

MySQL WorkBench版本为6.0.8

JDBC驱动程序版本为5.1.34

谢谢!

EN

Stack Overflow用户

发布于 2017-06-16 14:40:13

使用characterEncoding=utf8进行jdbc url

代码语言:javascript
复制
jdbc:mysql://x.x.x.x:3306/db?useUnicode=true&characterEncoding=utf8

还请检查是否已将MySQL配置为使用utf8mb4

代码语言:javascript
复制
    [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

请参阅这里

票数 10
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44591895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档