mysql插入数据错误代码(教你解决往mysql数据库中存入汉字报错的方法)
类别:数据库 浏览量:716
时间:2021-10-08 00:41:38 mysql插入数据错误代码
教你解决往mysql数据库中存入汉字报错的方法一、遇到的问题
在向数据库中存入汉字时遇到这样的问题:
cause: java.sql.sqlexception: incorrect string value: ‘\xe6\x9f\xaf\xe5\x8d\x97' for column ‘user_name' at row 1
二、分析问题
这是由于数据库设计有问题导致的,当初创建数据库的时候直接选择的默认,没有修改为utf-8,后来尝试手动修改还是不行。
尝试把数据库和表的默认字段改为utf8,但是还是不能存汉字。
三、真正的问题
真正的问题打开表的信息可以看到
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文件
此时再查看表信息
这样就全部是utf8了,这样基本上可以肯定解决问题了。
五、解决效果
测试验证下是否真正的解决问题了:
到此这篇关于mysql基础之教你解决往数据库中存入汉字报错的方法的文章就介绍到这了,更多相关往数据库存入汉字报错的解决方法内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
您可能感兴趣
- navicat for mysql连接测试失败(Navicat连接虚拟机mysql常见错误问题及解决方法)
- mysql的7种索引(浅入浅出 MySQL 索引)
- mysql的innodb引擎数据结构(MySQL InnoDB架构的相关总结)
- mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)
- mysql自定义函数怎么设置(MySQL自定义变量?学不废不收费~)
- mysql8.0.26安装教程(mysql 8.0.22压缩包完整安装与配置教程图解亲测安装有效)
- mysql的json格式解析(mysql json格式数据查询操作)
- navicat连接mysql是远程连接吗(详解Navicat远程连接mysql很慢)
- mysql索引失效原因(MySQL索引失效的几种情况详析)
- mysql 安装阿里云(详解如何在阿里云服务器安装Mysql数据库)
- mysql实验总结分析(MySQL查询截取的深入分析)
- MySQL主从状态检查的实现(MySQL主从状态检查的实现)
- 如何重新配置mysql的端口(如何快速修改MySQL用户的host属性)
- mysql数据库与表的基本操作总结(Mysql、Oracle中常用的多表修改语句总结)
- mysql数据备份的几种方式(MySQL数据库备份过程的注意事项)
- mysql 时间戳获取(MySQL时间盲注的五种延时方法实现)
- 三兄妹感情再遇波折,人设接连崩塌 《以家人之名》剧情猜不透(三兄妹感情再遇波折)
- 《小敏家》金波想要复婚 这只是他圈套的第1步,更可恶的在后面(小敏家金波想要复婚)
- 小敏家 剧情离谱一锅乱炖,但他们俩绝对是这部剧的一大 亮点(剧情离谱一锅乱炖)
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
- 吴启华与曾舜晞两代张无忌同框,戏里经典的他却没活出原著的潇洒(吴启华与曾舜晞两代张无忌同框)
- 经常发这三种 朋友圈 的人,要迅速屏蔽(经常发这三种朋友圈)
热门推荐
- sql server信息管理案例(利用SQL Server数据库邮件服务实现监控和预警)
- 织梦dedecms的时间调用标签(dedecms/织梦专题节点列表内容实现分页的方法介绍)
- SqlServer 复制中将大事务分成小事务分发的方法(SqlServer 复制中将大事务分成小事务分发的方法)
- mysql中数据类型的学习体会(MySQL 实现lastInfdexOf的功能案例)
- 如何提升代码质量
- jQuery多个版本间,以及与其他js文件冲突的解决方法
- python入门知识点总结(深入解析Python小白学习操作列表)
- python3和python区别(Python2与Python3的区别实例总结)
- h5页面快速制作方法(h5网页水印SDK的实现代码示例)
- linux查看负载命令(在Linux命令行中使用计算器的5个命令详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9