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

作者:牛哄哄的柯南 时间:2024-01-15 02:32:06 

一、遇到的问题

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

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数据库中存入汉字报错的方法

来源:https://blog.csdn.net/weixin_43883917/article/details/116305255

标签:mysql,存入汉字,报错
0
投稿

猜你喜欢

  • Django实现翻页的示例代码

    2023-01-10 23:10:20
  • 实操Python爬取觅知网素材图片示例

    2021-12-12 21:19:59
  • Python中函数的参数定义和可变参数用法实例分析

    2023-10-04 00:26:30
  • 重构中的模块化设计:样式的作用域

    2010-04-23 14:42:00
  • Go语言开发框架反射机制及常见函数示例详解

    2024-02-16 17:23:19
  • 详解如何用Golang处理每分钟100万个请求

    2023-10-12 20:30:30
  • 用python监控服务器的cpu,磁盘空间,内存,超过邮件报警

    2023-04-22 07:13:38
  • 如何用python实现结构体数组

    2023-10-13 19:07:34
  • python+Matplotlib 绘制带置信区间的折线图

    2022-04-29 06:23:40
  • ASP获取远程文件大小信息(通过header头信息)

    2010-03-11 21:25:00
  • 如何实现全文检索?

    2010-05-24 18:24:00
  • Mysql exists用法小结

    2024-01-18 00:51:54
  • Go语言并发编程之互斥锁Mutex和读写锁RWMutex

    2024-04-25 15:00:32
  • Python程序退出方式小结

    2021-12-21 19:29:55
  • Python实现简单的多任务mysql转xml的方法

    2024-01-26 20:11:07
  • ASP.NET(C#)中操作SQLite数据库实例

    2024-01-20 08:30:12
  • Centos6.x服务器配置jdk+tomcat+mysql环境(jsp+mysql)

    2023-06-14 12:14:13
  • 利用Python打造一个多人聊天室的示例详解

    2023-04-10 15:22:11
  • Python实现将Excel转换成为image的方法

    2023-08-10 03:59:55
  • 使用selenium自动控制浏览器找不到Chromedriver问题

    2023-02-02 01:32:33
  • asp之家 网络编程 m.aspxhome.com