基本属性

[client]代表客户端默认设置内容;
[mysql]代表我们使用mysql命令登录mysql数据库时的默认设置;
[mysqld]代表数据库自身的默认设置;

character_set_client:客户端请求数据的字符集 character_set_connection:客户机/服务器连接的字符集 character_set_database:默认数据库的字符集,无论默认数据库如何改变,都是这个字符集; 如果没有默认数据库,那就使用 character_set_server指定的字符集,
这个变量建议由系统自己管理,不要人为定义。
character_set_filesystem:把os上文件名转化成此字符集,即把 character_set_client转换 character_set_filesystem,默认binary是不做任何转换的
character_set_results:结果集,返回给客户端的字符集
character_set_server: 数据库服务器的默认字符集
character_set_system: 系统字符集,这个值总是utf8,不需要设置。这个字符集用于数据库对象(如表和列)的名字,也用于存储在目录表中的函数的名字。

“ default-character-set=utf8 ”前添加“ loose- ”以告诉程序不认识这个此选项时略过此选项

解决乱码(重要):

注意:utf8字符集有bug,不要使用如下方法,本篇是刚入门mysql时写的
在创建数据库的时候,source数据库sql文件以前,就要设定好字符集
举例:

  1. create database shopapi CHARACTER SET utf8 COLLATE utf8_general_ci;

执行show create table指令,可以看到一张表的建表语句

  1. CREATE TABLE `table1` (
  2. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  3. `field1` text COLLATE utf8_unicode_ci NOT NULL COMMENT '字段1',
  4. `field2` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '字段2',
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8_unicode_ci;

大部分字段我们都能看懂,但是今天要讨论的是COLLATE关键字。这个值后面对应的utf8_unicode_ci是什么意思呢?见转载。