教你解决往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 相关文章推荐
多表查询、事务、DCL
Apr 05 MySQL
新手必备之MySQL msi版本下载安装图文详细教程
May 21 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
MySQL 如何限制一张表的记录数
Sep 14 MySQL
教你如何让spark sql写mysql的时候支持update操作
Feb 15 MySQL
MySQL中一条SQL查询语句是如何执行的
Apr 08 MySQL
MySQL创建管理HASH分区
Apr 13 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
May 11 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 MySQL
MySQL数据库表约束讲解
Jun 21 MySQL
MySQL的表级锁,行级锁,排它锁和共享锁
Jul 15 MySQL
MySQL时间设置注意事项的深入总结
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
May 06 #MySQL
MySQL创建高性能索引的全步骤
将图片保存到mysql数据库并展示在前端页面的实现代码
MySQL的join buffer原理
Apr 29 #MySQL
Mysql服务添加 iptables防火墙策略的方案
Apr 29 #MySQL
MySQL数据迁移相关总结
You might like
PHP会话控制实例分析
2016/12/24 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
JS的get和set使用示例
2014/02/20 Javascript
JavaScript获得页面base标签中url的方法
2015/04/03 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
微信小程序 地图定位简单实例
2016/10/14 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
分分钟入门python语言
2018/03/20 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
Django实现基于类的分页功能
2019/10/31 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
匡威德国官网:Converse德国
2019/01/26 全球购物
Collection和Collections的区别
2016/05/02 面试题
资深生产主管自我评价
2013/09/22 职场文书
办公室综合文员岗位职责范本
2014/02/13 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
关于诚信的活动方案
2014/08/18 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
导游词之山东孔庙
2019/11/04 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
Python实现socket库网络通信套接字
2021/06/04 Python
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS