代码编织梦想

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

 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,总结:

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35461948/article/details/136909971

mysql怎么查看字符集设置_mysql 设置查看字符集-爱代码爱编程

一、查看字符集 1.查看MYSQL数据库服务器和数据库字符集 方法一:show variables like '%character%'; 方法二:show variables like 'collation%'; 2.查看MYSQL所支持的字符集 show charset; 3.查看库的字符集 语法:show database stat

查看mysql库字符集_mysql 常用查看库,表字符集命令-爱代码爱编程

mysql 常用查看库,表字符集命令 2012-03-09 08:45:57|  分类: mysql |  标签:mysql  字符集  命令   |举报|字号 订阅 1.查看数据库支持的所有字符集 show character set;或show char set; 2.查看当前状态 里面包括当然的字符集设置 status或者\s 3.查

mysql查看当前表字符集_查看mysql字符集及修改表字符集-爱代码爱编程

MySQL 乱码的根源是的 MySQL 字符集设置不当的问题,本文汇总了有关查看 MySQL 字符集的命令。包括查看 MySQL 数据库服务器字符集、查看 MySQL 数据库字符集,以及数据表和字段的字符集、当前安装的 MySQL 所支持的字符集等。 一、查看 MySQL 数据库服务器和数据库字符集。 mysql> show variable

mysql查看和修改字符集-爱代码爱编程

一、查看字符集 查看MYSQL数据库服务器和数据库字符集 方法一: show variables like'%character%'; 方法二: show variables like'collation%'; 查看MYSQL所支持的字符集 show charset; 查看库的字符集 语法:show create database 库

数据库之mysql字符集与数据库操作-爱代码爱编程

字符集 MySQL字符集包括字符集(CHARACTER)和校对规则(COLLATION) CHRARCTER SET 与COLLATION的关联 MySQL服务器支持多种字符集(Character Set)每个字符集

elt 同步 mysql 到 doris-爱代码爱编程

如何基于 Flink CDC 快速构建 MySQL 到 Doris 的 Streaming ELT 作业,包含整库同步、表结构变更同步和分库分表同步的功能。 本教程的演示都将在 Flink CDC CLI 中进行,无需一行 Java/Scala 代码,也无需安装 IDE。 准备阶段 # 准备一台已经安装了 Docker 的 Linux 或者 Mac

chat4-爱代码爱编程

本文档描述了Server端接收到Client的消息并转发给所有客户端或私发给某个客户端 同时将聊天消息保存到mysql 服务端为当前客户端创建一个线程,此线程接收当前客户端的消息并转发给所有客户端或私发给某个客户端同时将聊天消息保存到mysql 本文档主要总结了将聊天消息保存到mysql !!! 一、mysql: mysql数据库中创建chati