教你解决往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 8.0.24版本安装配置方法图文教程
May 12 MySQL
MySQL表字段时间设置默认值
May 13 MySQL
Mysql中 unique列插入重复值该怎么解决呢
May 26 MySQL
一文读懂navicat for mysql基础知识
May 31 MySQL
MySQL 常见存储引擎的优劣
Jun 02 MySQL
mysql5.7使用binlog 恢复数据的方法
Jun 03 MySQL
MySQL非空约束(not null)案例讲解
Aug 23 MySQL
MySQL约束超详解
Sep 04 MySQL
MySQL 分区表中分区键为什么必须是主键的一部分
Mar 17 MySQL
讲解MySQL增删改操作
May 06 MySQL
MySQL数据库配置信息查看与修改方法详解
Jun 25 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 MySQL
MySQL时间设置注意事项的深入总结
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
May 06 #MySQL
MySQL创建高性能索引的全步骤
将图片保存到mysql数据库并展示在前端页面的实现代码
MySQL的join buffer原理
Apr 29 #MySQL
Mysql服务添加 iptables防火墙策略的方案
Apr 29 #MySQL
MySQL数据迁移相关总结
You might like
php 随机排序广告的实现代码
2011/05/09 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
基于python实现微信模板消息
2015/12/21 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
.NET概念性的面试题
2012/02/29 面试题
关于Java finally的面试题
2016/04/27 面试题
放飞蜻蜓反思
2014/02/05 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
更夫岗位责任制
2014/02/11 职场文书
关于安全演讲稿
2014/05/09 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android
你真的会用Mysql的explain吗
2022/03/31 MySQL