我有一个“旧的”数据库(在utf 8中),我在其中使用JDBC进行读写。现在,我还必须能够将表情符号存储到表的一列中。
我将涉及的列的字符集更改为utf8mb4:

ALTER TABLE
myTable
CHANGE column_name column_name
longtext
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci
NOT NULL;


但是,当我尝试在该列中插入图释时,出现了著名的错误

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x8D\xF0\x9F...'


我应该转换整个数据库,还是我做错了什么?

最佳答案

需要与utf8mb4连接以获得👍等。

?useUnicode=yes&characterEncoding=UTF-8调用中的getConnection()

作为后备,在连接后执行SET NAMES utf8mb4
 (请参阅评论。)

“对于Connector / J 8.0.12及更早版本:为了使用utf8mb4字符集进行连接,必须为服务器配置character_set_server=utf8mb4;如果不是这样,则将UTF-8用于characterEncoding在连接字符串中,它将映射到MySQL字符集名称utf8,这是utf8mb3的别名。

关于mysql - MySql和JDBC:将单列的字符集更改为utf8mb4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57526681/

10-13 00:57