首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何最终正确地在utf8mb4上设置MySQL?

如何最终正确地在utf8mb4上设置MySQL?
EN

Stack Overflow用户
提问于 2017-05-07 10:01:46
回答 1查看 5.2K关注 0票数 4

从昨天起我就在这个问题上失去了理智。

我正在尝试将我的MySQL数据库从utf8转换为utf8mb4。为此,我跟踪了这些站点/线程:https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4Cannot store emoji in databaseChange MySQL default character set to UTF-8 in my.cnf?等。

我的数据库似乎像预期的那样有一个utf8mb4_unicode_ci collation,以及她的所有表。

然而,当我继续进行SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';时,我得到:

代码语言:javascript
复制
#With a Root access
Variable_name              Value
character_set_client        utf8                #expecting utf8mb4
character_set_connection    utf8                #expecting utf8mb4
character_set_database      utf8mb4             #good
character_set_filesystem    binary              #good
character_set_results       utf8                #expecting utf8mb4
character_set_server        utf8mb4             #good
character_set_system        utf8                #expecting utf8mb4
collation_connection        utf8_general_ci     #expecting utf8mb4_unicode_ci
collation_database          utf8mb4_unicode_ci  #good
collation_server            utf8mb4_unicode_ci  #good

#With a standard user access
Variable_name               Value
character_set_client        utf8                #expecting utf8mb4
character_set_connection    utf8mb4             #good 
character_set_database      utf8mb4             #good
character_set_filesystem    binary              #good
character_set_results       utf8                #expecting utf8mb4
character_set_server        utf8mb4             #good
character_set_system        utf8                #expecting utf8mb4
collation_connection        utf8mb4_unicode_ci  #good
collation_database          utf8mb4_unicode_ci  #good
collation_server            utf8mb4_unicode_ci  #good

我设置了如下所示的/etc/mysql/conf.d/90-my.cnf文件:

代码语言:javascript
复制
[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
init-connect = 'SET collation_connection = utf8mb4_unicode_ci'
init-connect = 'SET NAMES utf8mb4'

我的MySQL版本是5.5.54,全部设置在debian 7中。

有人能帮我吗?

谢谢你的帮助,也为我糟糕的英语感到抱歉.

编辑

有趣的事实:当我在内联命令中检查变量时,我得到了以下内容:

代码语言:javascript
复制
mysql> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

当我检查phpmyadmin (具有非超级用户访问权限)时,character_set_clientcharacter_set_results仍然有

EN

回答 1

Stack Overflow用户

发布于 2017-05-07 22:52:41

当以用户root身份连接时,init-connect将被忽略。

在没有SUPER权限的情况下,为应用程序提供自己的登录。

然后,为了确保,无论何时从应用程序中建立连接,都要执行特定于语言的提供字符集的方法。(或执行SET NAMES utf8mb4。)你用的是什么应用语言?

如果有其他问题发生,请参阅Trouble with utf8 characters; what I see is not what I stored中的“最佳实践”

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

https://stackoverflow.com/questions/43830160

复制
相关文章

相似问题

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