在 MySQL 中,我在 my.cnf 中放了啥,以便所有表都是 UTF-8,默认情况下可以与表情符号一起使用?

Posted

技术标签:

【中文标题】在 MySQL 中,我在 my.cnf 中放了啥,以便所有表都是 UTF-8,默认情况下可以与表情符号一起使用?【英文标题】:In MySQL, what do I put inside my.cnf so that all tables are UTF-8 that works with emojis by default?在 MySQL 中,我在 my.cnf 中放了什么,以便所有表都是 UTF-8,默认情况下可以与表情符号一起使用? 【发布时间】:2016-11-03 06:10:18 【问题描述】:

我希望(要创建的)每个表和数据库都是 utf-8,可与表情符号一起使用。我知道我需要在my.cnf 中定义一些变量:

init_connect='SET collation_connection = ??? '
init_connect='SET NAMES ???'
character-set-server = ???
collation-server = ???

但是,我不确定要在 ??? 中添加什么。我在my.cnf 里面放了什么?

【问题讨论】:

这篇文章能回答你的问题吗? ***.com/questions/3513773/… How to support UTF-8 completely in a web application 的可能重复项......还有更多关于此的问题...... 【参考方案1】:

这篇文章可能会有所帮助:https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4

它详细解释了如何切换到utf8mb4 以支持完整的 unicode,从而允许使用以下配置的表情符号:

[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

【讨论】:

【参考方案2】:

除了按照@eol 的建议更改为utf8mb4,可能还有更多工作要做。

如果您已经有具有utf8 列的表;做ALTER TABLE .. CONVERT TO CHARACTER SET utf8mb4

连接的时候,如果客户端有非mysql的方式,一定要建立UTF-8,或者使用SET NAMES utf8mb4

请记住,root 会忽略 init-connect。您应该有一个应用程序的非根“用户”。

【讨论】:

【参考方案3】:

在 MySQL 数据库中支持完整的 Unicode

    对于数据库:ALTER DATABASE DATABASE_NAME CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

    对于表格: ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    对于列:ALTER TABLE TABLE_NAME CHANGE COLUMN_NAME COLUMN_NAME VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

【讨论】:

以上是关于在 MySQL 中,我在 my.cnf 中放了啥,以便所有表都是 UTF-8,默认情况下可以与表情符号一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

mysql 5.6 ubuntu 15.04 找不到正确的 my.cnf 文件

mysql服务性能优化—my.cnf配置说明详解

mysql在linux下查看my.cnf位置的方法

[转]MySQL5.5 my.cnf配置参考

我在 Windows 计算机上找不到 my.cnf [重复]

MySQL的my.cnf文件(解决5.7.18下没有my-default.cnf)