msyql 查看和修改字符集的方法

        在插入或修改数据的时候,报字符集的错误,中文的无法进行插入修改。比如:

 update users  set user_name='关羽'  where user_id=2;

   报错信息:

        ERROR 1366 (HY000): Incorrect string value: '/xB9/xD8/xD3/xF0' for column 'user_name' at row 1 
  向表中插入中文字符时,出现错误。 

1,查看字符集

1,查看MYSQL数据库服务器和数据库字符集

方法一:查看字符集

show variables like '%character%';

方法二:查看校对集字符

show variables like 'collation%';

        MySQL 中每个字符集都会对应多个校对规则,是一对多的关系。比如utf8对应的collation有utf8_general_ci,utf8_bin,utf8_unicode_ci等。而且每个character set会有个默认的collation与之对应,在创建数据库或者创建表时如果只指定character set,不指定collation,就会使用character set默认的collation。collation的命名是以对应的character set为开头,比如collation为utf8_general_ci,就知道这个collation对应的字符集是utf8。

-- 查看校对规则有哪些
SHOW COLLATION;

2,查看MYSQL所支持的字符集

sql语句:

show charset;

3,查看库的字符集

语法:

SHOW CREATE DATABASE database_name;

例如:

SHOW CREATE DATABASE test;

查看当前数据库的字符集:

SELECT @@character_set_database;

4,查看表的字符集

语法:

show table status from 库名 like 表名;

例如:

SHOW TABLE STATUS FROM test LIKE 'worker%'; 

5,查看表中所有列的字符集

语法

show full columns from 表名;

例如:

SHOW FULL COLUMNS FROM worker;

Collation字段对应字符集

2,设置字符集

        设置字符集一般有两种方法,一种是在创建表的时候设置字符集,另一种是表建成之后修改字符集。也还可以指定字段的字符集。

1,创建时指定字符集

1,创建库的时候指定字符集:

语法:

create database 库名 default character set=字符集;

例如:

create database test1 default character set=utf8;

2,创建表的时候指定字符集:

语法:

create table 表名(属性)default character set = 字符集;

例如:

CREATE TABLE `worker2` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

3,字段指定字符集

语法:

create table 表名 (字段名 数据类型 character set 字符集名);

例如:

CREATE TABLE `worker3` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(30) DEFAULT NULL,
  `gender` CHAR(1) CHARACTER SET gbk,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

再查看字段的字符集:

SHOW FULL COLUMNS FROM worker3;

        gender字符集是gbk的

2,修改字符集

1,修改全局字符集
/*字符集设置*/
/*建立连接使用的编码*/
set character_set_connection=utf8;
/*数据库的编码*/
set character_set_database=utf8;
/*结果集的编码*/
set character_set_results=utf8;
/*数据库服务器的编码*/
set character_set_server=utf8;


/*修改全局字符集*/
set character_set_system=utf8;


/*校对集字符设置*/
/*连接使用的编码*/
set collation_connection=utf8;


/*数据库的编码*/
set collation_database=utf8;
/*数据库服务器的编码*/
set collation_server=utf8;

2,修改库的字符集

语法:

alter database 库名 default character set 字符集;

例如

alter database test default character set utf8;

查看数据库当前的字符集编码

show create database test;

3,修改表的字符集

语法:

alter table 表名 convert to character set 字符集;

例如:

alter table worker3 convert to character set utf8;

再查看worker3字段的字符集

SHOW FULL COLUMNS FROM worker3;

可以看到gender字段的字符集改为utf8了。

4,修改字段的字符集

语法:

alter table 表名 modify 字段名 字段属性 character set 字符集;

例如:

alter table worker3 modify gender char(1) character set gbk;

再查看worker3字段的字符集

SHOW FULL COLUMNS FROM worker3;

可以看到gender字段的字符集改为gbk了。

3,总结:

        平时设置字符集感觉很少,默认都是系统设置的校对集字符。更多是出现报错了,插入中文字符的数据失败了,才会去查看表字段的字符集,再查看表格的字符集,最后查数据库的字符集,一级一级往上定位。

相关推荐

  1. MySQL查看修改时区

    2024-04-07 05:04:03       67 阅读
  2. MySQL查看修改时区

    2024-04-07 05:04:03       26 阅读
  3. 查看mysql数据库大小、表大小最后修改时间

    2024-04-07 05:04:03       30 阅读
  4. MySQL忘记root密码修改root密码解决方法

    2024-04-07 05:04:03       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-07 05:04:03       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-07 05:04:03       97 阅读
  3. 在Django里面运行非项目文件

    2024-04-07 05:04:03       78 阅读
  4. Python语言-面向对象

    2024-04-07 05:04:03       88 阅读

热门阅读

  1. 【Linux】05.部署Microsoft SQL Server

    2024-04-07 05:04:03       37 阅读
  2. 我的创作纪念日

    2024-04-07 05:04:03       38 阅读
  3. MySQL里面慢查询优化指南:从定位到优化

    2024-04-07 05:04:03       46 阅读
  4. PostCSS安装以及使用详解

    2024-04-07 05:04:03       43 阅读
  5. HART报文详解

    2024-04-07 05:04:03       33 阅读
  6. Redis的String详细介绍

    2024-04-07 05:04:03       41 阅读
  7. 【算法】排硬币

    2024-04-07 05:04:03       39 阅读
  8. 互联网面经

    2024-04-07 05:04:03       44 阅读
  9. 从石膏像到真人:素描的进步之路

    2024-04-07 05:04:03       43 阅读