使用DataGrip编写SQL语句时出现以下错误:
Incorrect string value(字符串值不正确): '\xE7\x94\xB7' for column 'gender' at row 1
itcast> insert into employee(`id`, `workno`,`name`,`gender`,`age`,`idcard`,`entrydate`) values (1,'1','xzy','男',10,'123456789123456789','2020-02-02')
[2022-05-29 22:42:24] [HY000][1366] Incorrect string value: '\xE7\x94\xB7' for column 'gender' at row 1
出现的问题:字符集对应不上,性别“男”为中文字符串,需要使用到utf-8字符集,而默认是使用的是latin1字符集。
CREATE TABLE `user` (
`id` int(11) DEFAULT NULL COMMENT '编号',
`name` varchar(50) DEFAULT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='用户表'
解决方案:此时应该根据报错的内容修改对应的数据库、表或者字段的字符集。
代码如下:
1、修改数据库字符集
alter database db_new(数据库名) charset utf8mb4;
2、修改表字符集
alter table tb(表名) charset=utf8mb4;
3、修改表字符集和校验规则
alter table tb(表名)charset=utf8mb4 collate=utf8mb4_general_ci;
4、修改表字段的字符集和校验规则
alter table tb(表名)modify name varchar(50)(字段名+字段数据类型) character set utf8 collate utf8_general_ci;