首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >utf8mb4在MySQL中的应用

utf8mb4在MySQL中的应用
EN

Stack Overflow用户
提问于 2015-02-16 11:48:39
回答 4查看 49K关注 0票数 22

为了在MySQL中使用4字节的MySQL (5.6.11),我在my.ini文件中设置了以下变量(没有找到my.cnf)。此文件位于Windows上名为Application Data (C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.6)的隐藏文件夹中。它在安装目录下不可用。

代码语言:javascript
复制
[client]
port=3306
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
init-connect='SET NAMES utf8mb4'
collation_server=utf8mb4_unicode_ci
character_set_server=utf8mb4

然后发出以下命令,

代码语言:javascript
复制
SHOW VARIABLES
WHERE Variable_name
LIKE 'character\_set\_%'
OR Variable_name LIKE 'collation%';

仍然显示以下列表。

从图片本身看,很明显有几个变量仍然在使用3字节的utf8.

在这样做之前,已经发出了以下命令来对数据库本身进行相应的更改。

代码语言:javascript
复制
ALTER DATABASE database_name
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

并且在所述数据库中的每个表上也发出了以下命令。

代码语言:javascript
复制
ALTER TABLE table_name
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

然而,为什么还没有将一些变量设置到所述字符集以及排序?少了什么?

系统(操作系统)本身是在执行了上面指定的每一个任务之后重新启动的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-02-16 12:10:30

客户端通常在连接时设置这些值。my.ini中的设置只是默认设置,当客户端没有显式指定连接编码时,这些设置就会应用。由于它们不可靠,每个客户端都应该指定连接编码。由于您有一些漂亮的屏幕截图,所以我猜您正在连接一些GUI实用程序,这可能确实显式地设置了一些连接编码。

设置连接字符集的PHP示例:

代码语言:javascript
复制
new PDO('mysql:host=localhost;charset=utf8mb4')
票数 17
EN

Stack Overflow用户

发布于 2017-03-06 06:51:33

如果您显示您的全局变量,您可能会看到您的所有设置实际上是正确的。

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

这可能与这个错误有关,我过去也遇到过同样的问题。我将DB字符集从utf8更改为utf8mb4。直接从mysql命令行执行查询是可以的,但我在使用Workbench插入表情符号时遇到了问题。最后,我通过运行

SET NAMES 'utf8mb4'

每次我用Workbench打开到DB的连接时。

使用续集Pro作为替代方案也不错。

票数 5
EN

Stack Overflow用户

发布于 2015-02-23 23:09:27

我认为您正在以根用户身份进行连接,因此没有执行init-connect='SET NAMES utf8mb4'

在任何应用程序代码中使用根(或SUPER)是不明智的;仅用于管理操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28540772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档