1

我一直在尝试按照本教程中的步骤让我的数据库接受表情符号,因为它似乎是链接最多的一个。

https://mathiasbynens.be/notes/mysql-utf8mb4

即使有一个测试数据库,我也无法让它工作,到目前为止我找不到答案。这是我正在运行的一些测试代码。

CREATE DATABASE testDB;

ALTER DATABASE testDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

CREATE TABLE testDB.test_table (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `data` VARCHAR(191) NULL,
    PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;

INSERT INTO testDB.test_table (data) VALUES ('foobar');

我收到的错误

Error Code: 1366. Incorrect string value: '\xF0\x9D\x8C\x86ba...' for column 'data' at row 1

我必须有其他东西才能完成这项工作。所以..它是什么。

另一个谜题的线索是

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

退货

character_set_client    utf8
character_set_connection    utf8
character_set_database  utf8mb4
character_set_filesystem    binary
character_set_results   utf8
character_set_server    utf8mb4
character_set_system    utf8
collation_connection    utf8_general_ci
collation_database  utf8mb4_unicode_ci
collation_server    utf8mb4_unicode_ci

这是不正确的,但是当我检查 MySQL Workbench 中的选项文件时,看到在 General/International 下我有以下设置

Character-set-filesystem = binary
Character-set-server = utf8mb4
Collation-server = utf8mb4_unicode_ci

my.ini 的内容

[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

感谢您的时间和您可以提供的任何帮助。

4

0 回答 0