教你解决往mysql数据库中存入汉字报错的方法


Posted in MySQL onMay 06, 2021

一、遇到的问题

在向数据库中存入汉字时遇到这样的问题:

Cause: java.sql.SQLException: Incorrect string value: ‘\xE6\x9F\xAF\xE5\x8D\x97' for column ‘user_name' at row 1

教你解决往mysql数据库中存入汉字报错的方法

二、分析问题

这是由于数据库设计有问题导致的,当初创建数据库的时候直接选择的默认,没有修改为utf-8,后来尝试手动修改还是不行

尝试把数据库和表的默认字段改为utf8,但是还是不能存汉字。

教你解决往mysql数据库中存入汉字报错的方法
教你解决往mysql数据库中存入汉字报错的方法

三、真正的问题

教你解决往mysql数据库中存入汉字报错的方法

真正的问题打开表的信息可以看到latin1的存在,这是因为即使我们后面手动修改字段类型还是修改不了的,就像上面即使我们修改了,可是表信息还是没有改掉,真正的解决办法:1、要不我们重新创建数据库,把创建的时候就设置成utf8(有点费劲),2、要不就是下面的解决办法(也不是那么轻松,如果涉及的字段比较多的话),导出并修改sql语句,然后在重新执行sql语句。

四、解决办法

把我们的数据库导出为sql文件:

/*
SQLyog Enterprise v12.08 (64 bit)
MySQL - 5.7.31 : Database - data_test
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`data_test` /*!40100 DEFAULT CHARACTER SET latin1*/;

USE `data_test`;

/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(50) CHARACTER SET latin1 NOT NULL COMMENT '账号',
  `password` varchar(50) CHARACTER SET latin1 NOT NULL COMMENT '密码',
  `user_state` varchar(10) CHARACTER SET latin1 NOT NULL DEFAULT '1' COMMENT '状态,逻辑删除',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;

/*Data for the table `user` */

LOCK TABLES `user` WRITE;

insert  into `user`(`user_id`,`user_name`,`password`,`user_state`) values (1,'keafmd','keafmd','1'),(3,'21312321','123','0'),(11,'213','213','1'),(12,'keafmd','666','0');

UNLOCK TABLES;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

就像上面说的一样我们发现了latin1的身影,那么我们就把latin1全部替换为utf8

替换后的sql文件:

/*
SQLyog Enterprise v12.08 (64 bit)
MySQL - 5.7.31 : Database - data_test
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`data_test` /*!40100 DEFAULT CHARACTER SET utf8  */;

USE `data_test`;

/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(50) CHARACTER SET utf8  NOT NULL COMMENT '账号',
  `password` varchar(50) CHARACTER SET utf8  NOT NULL COMMENT '密码',
  `user_state` varchar(10) CHARACTER SET utf8  NOT NULL DEFAULT '1' COMMENT '状态,逻辑删除',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

/*Data for the table `user` */

LOCK TABLES `user` WRITE;

insert  into `user`(`user_id`,`user_name`,`password`,`user_state`) values (1,'keafmd','keafmd','1'),(3,'21312321','123','0'),(11,'213','213','1'),(12,'keafmd','666','0');

UNLOCK TABLES;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

选择执行sql脚本,选择修改后的sql文件

教你解决往mysql数据库中存入汉字报错的方法

此时再查看表信息

教你解决往mysql数据库中存入汉字报错的方法

这样就全部是utf8了,这样基本上可以肯定解决问题了。

五、解决效果

测试验证下是否真正的解决问题了:

教你解决往mysql数据库中存入汉字报错的方法

教你解决往mysql数据库中存入汉字报错的方法

到此这篇关于Mysql基础之教你解决往数据库中存入汉字报错的方法的文章就介绍到这了,更多相关往数据库存入汉字报错的解决方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL创建索引需要了解的
Apr 08 MySQL
MySQL查询学习之基础查询操作
May 08 MySQL
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 MySQL
MySQL 百万级数据的4种查询优化方式
Jun 07 MySQL
一篇文章带你深入了解Mysql触发器
Aug 02 MySQL
MySQL非空约束(not null)案例讲解
Aug 23 MySQL
mysql中varchar类型的日期进行比较、排序等操作的实现
Nov 17 MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 MySQL
Mysql多层子查询示例代码(收藏夹案例)
Mar 31 MySQL
Mysql中常用的join连接方式
May 11 MySQL
MySQL GTID复制的具体使用
May 20 MySQL
MySQL详细讲解变量variables的用法
Jun 21 MySQL
MySQL时间设置注意事项的深入总结
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
May 06 #MySQL
MySQL创建高性能索引的全步骤
将图片保存到mysql数据库并展示在前端页面的实现代码
MySQL的join buffer原理
Apr 29 #MySQL
Mysql服务添加 iptables防火墙策略的方案
Apr 29 #MySQL
MySQL数据迁移相关总结
You might like
php ios推送(代码)
2013/07/01 PHP
PHP基础知识介绍
2013/09/17 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
js变量提升深入理解
2016/09/16 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
vue组件实例解析
2017/01/10 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
Python通过正则表达式选取callback的方法
2015/07/18 Python
django站点管理详解
2017/12/12 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
详解Python用户登录接口的方法
2019/04/17 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
python中有关时间日期格式转换问题
2019/12/25 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
python实现KNN近邻算法
2020/12/30 Python
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
戴尔英国翻新电脑和电子产品:Dell UK Refurbished Computers
2019/07/30 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
综合办公室主任职责
2013/12/16 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技
nginx.conf配置文件结构小结
2022/04/08 Servers