MySQL5.7 字符集设置
- character-set-client-handshake = FALSE
- character-set-server = utf8mb4
- collation-server = utf8mb4_unicode_ci
- init_connect=’SET NAMES utf8mb4’
character-set-client-handshake
用来控制客户端声明使用字符集和服务端声明使用的字符集在不一致的情况下的兼容性.
1 | character-set-client-handshake = false |
1 | # 默认为 true |
character-set-server
声明服务端的字符编码, 推荐使用utf8mb4
, 该字符虽然占用空间会比较大, 但是可以兼容 emoji 😈 表情的存储
1 | character-set-server = utf8mb4 |
collation-server
声明服务端的字符集, 字符编码和字符集一一对应, 既然使用了utf8mb4
的字符集, 就要声明使用对应的字符编码
1 | collation-server = utf8mb4_unicode_ci |
init_connect
init_connect
是用户登录到数据库上之后, 在执行第一次查询之前执行里面的内容. 如果 init_connect
的内容有语法错误, 导致执行失败, 会导致用户无法执行查询, 从mysql 退出
使用 init_connect
执行 SET NAMES utf8mb4
意为:
- 声明自己(客户端)使用的是
utf8mb4
的字符编码 - 希望服务器返回给自己
utf8mb4
的查询结果
1 | init_connect = 'SET NAMES utf8mb4' |
完整配置
1 | character-set-client-handshake = FALSE |
参考文章: