MySQL无法输入中文字符问题的解决办法
作者:烽起黎明 发布时间:2024-01-22 08:26:56
前几日在使用MySQL数据库的时候,出现了一处保存,故作此记录✍
问题描述
下面是我这样exam表的结构
mysql> desc exam;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| chinese | decimal(3,1) | YES | | NULL | |
| math | decimal(3,1) | YES | | NULL | |
| english | decimal(3,1) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
然后我使用insert into
语句往这个表中插入了一条记录
mysql> insert into exam values (1, '张三', 78, 89, 93);
但是却报出了下面这样的错误
ERROR 1366 (HY000): Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
仔细阅读报错提示后,说是【位于第1行“name”列的字符串值“\xE5\xBC\xA0\xE4\xB8\x89”不正确】
问题排查
然后我思考了一下🤔可能是和当前数据库的字符集设置有关系,因为我在插入英文的时候是没有问题的
然后便使用下面这句查看了一下当前我的MySQL的各种编码
show variables like '%character%';
然后一查看就发现我的【character_set_database】数据库字符集为latin1
,也就是拉丁文,对于这种字符集来说支持不了中文的
mysql> show variables like '%character%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.01 sec)
解决方案
然后来说一下该如何去解决这个问题,这里提供两种解决方案
创建数据库时设置字符集为utf8
create database 数据库名 character set utf8;
例如下面这里,我新创建了一个名为test的数据库,后面跟上character set utf8
后,再去查看当前数据库的字符集就是utf8了
mysql> create database test character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> show variables like '%character%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
💬 那有人就会说:这样不是很麻烦吗,每次去创建数据库都要手动指定一下字符集
是的,所以你可以考虑第二种方案,做到一劳永逸
修改数据库配置文件【比较麻烦】
什么是配置文件?
用户配置文件就是在用户登录电脑时,或是用户在使用软件时,软件系统为用户所要加载所需环境的设置和文件的集合
很多程序,内部支持多种“模式”,可以调整当前程序,让他应用那种模式。 因此就可以借助“开关”来切换模式!软件的开关通常会用一个“图形化界面”,但是对于 MySQL 等专用软件则一般没有对应的图形化界面表示开关。只是通过一个【专门的文件】,来保存这些开关。这个文件就是 “配置文件”
① 而对于MySQL的配置文件就叫做my.ini
,我们可以通过【Everything】这个搜索工具来进行查找
② 打开路径后我们就看到了这个文件,当然你也可以直接在C盘的MySQL安装位置中招(MySQL默认安在C盘)
⚠注意看我下面的两个备份文件,在修改重要的配置文件前要先进行备份
③ 然后我们就可以通过记事本等方式去打开这个配置文件
④ 接下去找到这两个地方,把前面的# + 空格
去掉,并且在=
后面加上utf8
【注意这里一点空格也不要加!!!】
⑤ 在上面修改完配置文件,Ctrl + s后,找自己的电脑中找到【服务】,然后往下拉找到有关MySQL的,它便是你的MySQL服务器,重启一下即可
⚠注意在重启前要保证配置文件修改正确,否则MySQL会启动失败的
⑥ 接下去就可以再次启动MySQL创建一个新的数据库去看看我们的数据库默认字符集是否改成utf8了
⚠注意之前创建的那个数据库要删掉,因为其默认的字符集就是[latin1]
⑦ 然后我们再试一下去插入一条带有中文字符的记录,就发现没问题了( •̀ ω •́ )y
mysql> insert into exam values (1, '李四', 79, 82, 92);
Query OK, 1 row affected (0.00 sec)
写在最后
再看完了上面的这些内容后,我们来聊聊有关MySQL报错的问题
如果你使用过MySQL的话,就可以知道我们在初学CRUD的时候,会出现很多的报错,于是很多同学面对英文的报错就不知道该如何是好,就懒得学习了,这其实是不对的 如果英语基础不太好的同学可以把报错的提示放在翻译软件中去进行查看,若是能看懂的话最好,如果看不懂的话可以去百度搜搜看看,学会去发现问题、排查问题,最后解决问题
来源:https://blog.csdn.net/Fire_Cloud_1/article/details/130789834


猜你喜欢
- 二分查找算法:简单的说,就是将一个数组先排序好,比如按照从小到大的顺序排列好,当给定一个数据,比如target,查找target在数组中的位
- 最近遇到一个SQL Server服务器响应极度缓慢,并且出现客户端请求报错的情况,在数据库中的errorlog中出现磁盘请求超过15s才完成
- 利用seek监控文件内容,并打印出变化内容:#/usr/bin/env python#-*- coding=utf-8 -*-pos = 0
- 初级画心学Python,感觉你们的都好复杂,那我来个简单的,我是直接把心形看作是一个正方形+两个半圆:于是这就很简单了,十行代码解决:imp
- 目录项目场景:解决方案:概要描述:详细说明:总结:项目场景:使用FreeSql,包含所有的ORM数据库,都会存在这样的问题。在codefir
- 过年前产假归来,jmeter很多知识生疏了,这两天打开jmeter摸索了几下,老了记不住,还是准备弄个jmeter系列随笔吧。言归正传,使用
- 开发应用程序时,若只有一个窗口则只需关心这个窗口里面的各控件之间如何传递数据。如果程序有多个窗口,就要关心不同的窗口之间是如何传递数据。单一
- 可能某次不小心改了配置文件,导致无法打开jupyter,找了很多方法,都没从根本上解决问题。倒是发现启动的默认目录被改了,怀疑是这个问题。然
- python每天在指定时间段运行程序及关闭程序场景程序需要在每天某一时间段内运行,然后在某一时间段内停止该程序。程序:from dateti
- 前言NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自
- openpyxl特点openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间转换容
- 创建新的项目django-admin.py startproject my_project创建新的App# 在Django项目(my_pro
- 当系统出现故障时,只要存在数据日志那么就可以利用它来恢复数据解决数据库故障。作为SQL Server数据库管理员,了解数据日志文件的作用,以
- 综述:本文讨论了VBScript和 JScript之间的区别,以及它们的使用场合。推荐:Vbscript5.5中文语言参考手册chm格式下载
- 本文采用vue,同时增加鼠标点击事件和一些页面小优化基本结构新建一个sandBox.vue文件编写功能的基本结构 <div class
- 本文实例为大家分享了python实现飞机大战的具体代码,供大家参考,具体内容如下游戏的实现本质是多个图片的快速切换,类似动画一样,达到动态的
- 相关介绍Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动
- Python写入Excel有时需要合并单元格、或者改变文字内容的颜色首先导入xlwt模块import xlwt创建文件名创建Excel工作簿
- 目录matplotlib基础线形图散点图直方图子图图例配置三维图pandas绘图不论是数据挖掘还是数学建模,都免不了数据可视化的问题。对于
- 一、数据集下载加州高速公路PEMS数据集这里绘制PEMS04中的交通流量数据。该数据集中包含旧金山2018年1月1日至2月28日的29条道路