Linux系统中MySQL的配置文件为my.cnf。(注:有空把mysql默认编码改成utf8的实现过程也记录下来)mysql
Winows中的配置文件为my.ini。linux
找到/etc/mysql路径下的my.cnf文件,经过vi命令打开该文件并进行编辑,需添加以下所示配置:sql
[client]数据库
default-character-set=utf8mb4windows
[mysqld]编码
character-set-client-handshake = FALSEspa
character-set-server = utf8mb4.net
collation-server = utf8mb4_unicode_ci命令行
init_connect=’SET NAMES utf8mb4'rest
[mysql]
default-character-set=utf8mb4
修改完毕以后,经过wq保存退出
进入mysql中,按下述所示进行命令的执行:
1) 修改database的字符集:
ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
示例:
ALTER DATABASE xxxdb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
2) 步骤1)执行完成以后,须要执行use 数据库名,指明当前须要进行字符集修改的数据库;示例:use xxxdb;
3)修改table的字符集:
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
示例:
ALTER TABLE user_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
4) 修改column的字符集:
ALTER TABLE 表名 CHANGE 字段名 字段名 该字段原来的数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
示例:
ALTER TABLE user_comments CHANGE content content TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
上述修改完毕,exit退出mysql
经过/etc/init.d/mysql执行stop命令
经过/etc/init.d/mysql执行start命令
进入mysql中,用SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';命令查看字符集的状况
上述步骤实现以后即可成功使用emoji表情存储进mysql数据库的功能了。
————————————————————————————————————————————————————————————————
因为mysql数据库是须要备份和还原的,因此带有emoji表情的.sql文件的导入和导出的时候须要注意执行时的编码格式,如下为导入与导出的具体操做:
在进行把后缀名为.sql的文件,且文件数据中包含emoji表情的数据,进行备份导出的时候,此时不要使用第三方软件进行导出,而是使用命令行的形式执行该导出动做,其主要缘由是使用第三方导出该文件时,因为其默认的导出的编码格式为utf-8,该编码格式最多只支持3个字节,而一个emoji表情有4个字节,这将致使emoji表情的数据变成乱码。因此在本地导出的时候具体操做步骤以下:
1、 打开cmd,先找到mysqldump这个执行文件所在的路径;
2、 在路径后输入mysqldump –default-character-set-utf8mb4 –u 用户名 –p 数据库名 > 导出该文件的物理路径,按“Enter”,便可完成导出功能,在导出的物理路径中便可找到已被导出的该文件。
把linux系统中的.sql文件导入到本地的时候,不要使用Navicat Premium来进行导入,而是使用以下所示的命令行中的source .sql文件的物理路径,来进行以下的导入。