gpt4 book ai didi

java - MySQL Workbench 和 JDBC 中的 utf8mb4

转载 作者:可可西里 更新时间:2023-11-01 06:28:46 26 4
gpt4 key购买 nike

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

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 "character-set-server = utf8"更改为 "character-set-server = utf8mb4"

在这些步骤之后,我可以存储表情符号(如💢),但只有在 MySQL 控制台中执行 SQL 查询时:当我尝试从 MySQL Workbench 或 Wildfly webapp 启动查询时,我得到这个错误:

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 WorkBench 版本为 6.0.8

JDBC驱动版本为5.1.34

谢谢!

最佳答案

使用characterEncoding=utf8作为jdbc url

jdbc:mysql://x.x.x.x:3306/db?useUnicode=true&characterEncoding=utf8

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

    [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

参见 here

关于java - MySQL Workbench 和 JDBC 中的 utf8mb4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44591895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com