MySQL修改数据库、表、字段的字符编码

  •  备战2022春招或暑期实习,本专栏会持续输出MySQL系列文章,祝大家每天进步亿点点!文末私信作者,我们一起去大厂
  • 本篇总结的是 《MySQL之流程函数》,后续会每日更新~
  • 关于《Redis入门到精通》、《并发编程》、《Java全面入门》、《鸿蒙开发》等知识点可以参考我的往期博客
  • 相信自己,越活越坚强,活着就该逢山开路,遇水架桥!生活,你给我压力,我还你奇迹!

目录

一、简介

二、案例

三、解决方式


一、简介

很多情况下我们创建一张表忘记设置默认的字符编码,MySQL会为其设置默认的编码格式,这会导致在插入数据的数据字符集不匹配出现异常。

二、案例

案例:创建一张user表,不指定表和字段的编码格式

create table user (
  id int(10) primary key auto_increment comment '主键',
  name varchar(20) unique not null comment '姓名',
  age tinyint unsigned comment '年龄',
  status char(1) default '1' comment '状态',
  gender char(1) comment '性别'
) comment '用户表';

此时往表中插入一条数据

INSERT INTO user (name, age, status, gender) VALUES ('李子捌', 18, '1', '男');

出现了如下异常信息

[2022-02-28 11:21:42] [HY000][1366] Incorrect string value: '\xE6\x9D\x8E\xE5\xAD\x90...' for column 'name' at row 1
[2022-02-28 11:21:42] [HY000][1366] Incorrect string value: '\xE7\x94\xB7' for column 'gender' at row 1

这种情况就是字符编码格式不匹配问题,这应该如何解决呢?当然是修改字符编码方式。

三、解决方式

首先可以先查看数据库、表和字段的字符集,然后在修改不匹配的字符集即可
A. 查看数据库的字符集方式

-- database_name 为数据库名称
SHOW CREATE DATABASE database_name;

B. 查看表的字符集方式

-- table_name为表的名称
SHOW CREATE TABLE table_name;

C. 查看字段的字符集方式

-- column_name为字段名称
SHOW FULL COLUMNS FROM column_name;

修改数据库、表和字段的字符集方式如下
A. 修改数据库的字符集方式

-- database_name 为数据库名称
-- utf8为目标字符编码
ALTER DATABSE database_name DEFAULT CHARACTER SET utf8;

B. 修改表的字符集方式

-- table_name为表的名称
-- utf8为目标字符编码
ALTER TABLE table_name DEFAULT CHARACTER SET utf8;

C. 修改字段的字符集方式

-- table_name为表的名称
-- column_name为字段名称
-- varchar(20)为字段的类型
-- utf8为目标字符集
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(20) CHARACTER SET utf8;

D. 同时修改表和表中所有字符类型的字段字符集方式

-- 例子:alter table user2 convert to character set utf8 collate utf8_general_ci;
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
修改 MySQL 数据库中某个字段字符编码,可以按照以下步骤操作: 1. 登录 MySQL 数据库,可以使用以下命令: ``` mysql -u 用户名 -p ``` 其中,用户名是你的 MySQL 用户名,执行该命令后,系统会提示你输入密码。 2. 选择要修改字段字符编码数据库,可以使用以下命令: ``` use 数据库名称; ``` 其中,数据库名称是你要修改字段字符编码数据库名称。 3. 查看当前中的字段字符编码,可以使用以下命令: ``` show create table 名称; ``` 其中,名称是你要修改字段字符编码名称。 该命令会显示的创建语句,其中包括字段字符编码信息。 4. 修改中某个字段字符编码,可以使用以下命令: ``` alter table 名称 modify 字段名称 字段类型 character set 字符集名称; ``` 其中,名称是你要修改字段字符编码名称,字段名称是你要修改字符编码字段名称,字段类型是该字段原本的数据类型,字符集名称是你要修改为的字符编码。 执行该命令后,系统会提示修改成功。 5. 查看修改后的字段字符编码,可以使用以下命令: ``` show create table 名称; ``` 其中,名称是你要修改字段字符编码名称。 该命令会显示修改后的的创建语句,其中包括修改后的字段字符编码信息。 注意:修改字段字符编码可能会影响该字段中已有的数据,因此需要谨慎操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李子捌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>