需要修改my.ini( my.cnf) [client] default-character-set=utf8mb4 [mysqld] character-set-client-handshake = false character_set_server = utf8mb4 collation_server = utf8mb4_bin init_connect='set names utf8mb4' [mysqldump] character_set_client=utf8mb4 [mysql] default-character-set=utf8mb4 查看是否修改成功的方法: Mysql执行: show variables like 'version'; show variables like '%character%'; show variables like 'collation%'; 结果如下图 大家观察看,charater_set_system还是utf8,show variables 看下,但是它应是个只读变量。这个是系统的字符集,修改不了。所以,这个值不可配置,是硬编码的,和OS是紧密在一起的,不需要关注。 查看库的字符集 语法:show database status from 库名 like 表名; mysql> show create database shiyan\G*************************** 1. row *************************** Database: shiyanCreate Database: CREATE DATABASE `shiyan` /*!40100 DEFAULT CHARACTER SET gbk */1 row in set (0.00 sec) 4.查看表的字符集 语法:show table status from 库名 like 表名; mysql> show table status from class_7 like 'test_info'; ![]() 5.查看表中所有列的字符集 语法:show full columns from 表名; mysql> show full columns from test_info; 关于mysql init_connect的几个要点总结init_connect的作用 init_connect通常用于:当一个连接进来时,做一些操作,比如设置autocommit为0,比如记录当前连接的ip来源和用户等信息到一个新表里,当做登陆日志信息 1.设定字符集: init_connect='set autocommit=0; set names gbk;' 使用init_connect的注意点 1 只有超级账户才可以设置(super_priv权限) 2 超级账户无视init_connect设置(即init_connect的设置对来自超级账户的连接不生效) 在我们创建mysql数据库的时候我们经常会用到这句SQL:CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci。 那么这句sql的每一部分分别代表着什么?又有什么意义?在看了网上很多资料后想总结下。 我们将这句sql划分为三段:CREATE DATABASE `test` , DEFAULT CHARACTER SET utf8, COLLATE utf8_general_ci。 CREATE DATABASE `test` : 代表的是创建数据库 test。 DEFAULT CHARACTER SET utf8 : 代表的是将该库的默认编码格式设置为utf8格式。 COLLATE utf8_general_ci : 代表的是数据库校对规则,utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。 |
|