MySQL更改编码字符集

/ Database / 没有评论 / 1947浏览

mysql数据库的默认编码方式是latin1, 在mysql中存储和显示中文时会产生乱码(也可以建库时指定),必须要更改默认的编码方式为utf8 或 utf8mb4。(以下以utf8mb4为例。)

环境

MySQL 5.6

更改

临时改(不重启MySQL)

 /*数据库客户端的编码*/
 set character_set_client = utf8mb4;
 /*建立连接使用的编码*/
 set character_set_connection = utf8mb4;
 /*数据库的编码*/
 set character_set_database = utf8mb4;
 /*结果集的编码*/
 set character_set_results = utf8mb4;
 /*数据库服务器的编码*/
 set character_set_server=utf8mb4;

更改数据库的编码

就是修改mysql的my.cnf文件中的编码键值,

#服务器级
[client]
      default-character-set = utf8mb4
#数据库级别
[mysql]	  
      character_set_server =  utf8mb4
[mysql]	  
      character_set_server =  utf8mb4

创建数据库指定编码

在创建数据库时指定编码:

mysql> create database db_name character set utf8mb4 collate utf8mb4_general_ci;

修改库的编码

语法:alter database 库名 default character set 编码;

mysql> alter database db_name default character set utf8mb4;

更改某个表的编码

语法:alter table 表名 convert to character set 编码;

mysql> alter table table_name convert to character set utf8mb4;

在创建时若不指定编码方式,则默认继承上一级的编码方式。

查看

查看MySQL所支持的编码

mysql> show charset;

查看表的编码/建表SQL

mysql> show create table table_name;

查看表中所有列的编码

mysql> SHOW FULL COLUMNS FROM table_name;

查看库编码/建库SQL

mysql> show create database db_name\G
*************************** 1. row ***************************
       Database: db_name
Create Database: CREATE DATABASE `db_name` /*!40100 DEFAULT CHARACTER SET utf8mb4 */
1 row in set (0.00 sec)

查看数据库当前有的编码

mysql> show variables like '%char%';