问题:调用接口时报错 MySQL java.sql.SQLException: Incorrect string value ...
解决: 将表和列的字符集都改为utf8
借助工具
- 以SQLyog为例:
以命令的形式
- 查看数据库字符集
show variables like '%character%';
- 查看列的字符集
show full columns from xxxx
- 修改列的字符集(xxxx是表,yyyy是字段)
alter table xxxx MODIFY yyyy varchar(50) charset utf8;
- 记录
a.先查看库、表、表字符字段的编码格式
SHOW CREATE DATABASE db; //查看库的字符集
SHOW CREATE TABLE db.table;//查看表的字符集
SHOW FULL COLUMNS FROM table.field; //查看字段编码
b.修改库、表、字符字段的编码
ALTER DATABASE db DEFAULT CHARACTER SET utf8; //修改库的字符集
ALTER TABLE db.table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; //修改表以及字符字段的字符集
- 知识点:
- mysql的字符集的作用域有三个层级一个数据库级,一个是表级,一个是列级(字段级别的)。
- 优先级是:列级 > 表级 > 数据库级。
- tips
- 在创建数据库和表的时候, 注意字符集的选择
- 对于mysql字符集我们不想出现乱码情况有一个经验就是:
character_set_client、
character_set_connection、
character_set_results
字符尽量设置成一致的。 - 插入和查询emoji字符的时候,对上面三个参数的配置成utf8mb4
参考链接:
https://blog.csdn.net/u013066244/article/details/100095693
https://www.cnblogs.com/jiangds/p/9273315.html
网友评论