我使用的是 MariaDB 10.6.16,但在 10.3.39 中也重现了相同的行为。我的问题是这个小 SQL 片段:
CREATE TABLE problem (
text TEXT
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
INSERT INTO problem (text) VALUES ('𤋮');
这会导致错误消息:
ERROR 1366 (22007) at line 5: Incorrect string value: '\xF0\xA4\x8B\xAE' for column `problem`.`text` at row 1
字节
\xF0\xA4\x8B\xAE
准确地表示字符𤋮
,所以问题是MariaDB不允许插入这个特定字符。
我尝试过的:
如何说服 MariaDB 将此字符插入到我的数据库中?
使用非默认字符集需要获得
CHARACTER_SET_RESULTS
、CHARACTER_SET_CONNECTION
和CHARACTER_SET_CLIENT
的一致字符集。
要在一条语句中完成所有这些操作,请使用
SET NAMES
,在本例中:
SET NAMES utf8mb4
将所有这些与客户端相关的系统变量设置为支持“𤋮”字符的字符集。
排序规则自动设置为字符集的默认值,尽管它也可以通过 集名称 明确显示。