在 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 文件