我一直用UTF-8编码的MySQL数据库,现在需要能够存储4个字节的表情符号,所以我决定从UTF8编码改为utf8mb4:utf8mb4在MySQL Workbench和JDBC
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”
完成这些步骤后,我能够存储表情图案(如图),但只有当SQL查询在MySQL控制台中执行:当我尝试从MySQL Workbench或Wildfly Web应用程序启动查询时,出现此错误:
Error Code: 1366. Incorrect string value: '\xF0\x9F\x92\xA2' for column 'SOURCE_CONTEXT' at row 1
我想我需要改变客户端连接到数据库的方式,但我不知道如何。我读过一些关于在JDBC中使用“useUnicode = yes”但不起作用的东西。
${bdpath:3306/bstdb?useUnicode=yes}
编辑: 作为意见建议,我试着用:
${bdpath:3306/bstdb?characterEncoding=UTF-8}
,但没有运气,我收到了同样的“不正确的字符串值:“\ XF0 \ x9F \ X92 \ xA2'“错误。
也试过
${bdpath:3306/bstdb?useUnicode=true&characterEncoding=utf8mb4&}
,但它拒绝嘱咐的连接。
关于如何配置MySQL工作台和/或JDBC/Wildfly的任何想法?
MySQL的版本是5.7.18
MySQL工作台的版本是6.0.8
JDBC驱动程序版本为5.1.34
谢谢!
错过了配置文件部分在我的答案,这是一个为我学习! –