记一次MySQL数据库使用powershell进行练习时出现中文显示乱码的解决过程
1. 问题描述
-
最开始安装的MySQL数据库版本为5.5.27
-
按照网上教程一步一步安装完成,并设定编码为utf8
-
安装好后,进行数据库创建,表创建,然后尝试向表中插入中文
#创建一个数据库 create database mydb1; #使用该数据库,并在该数据库中创建一个表作为测试输入中文 use mydb1; create table exam(name varchar(20) not null); #向该表中插入中英文数据 insert into exam value('james');#插入成功 insert into exam value('张三');#插入失败,提示好像是数据类型错误吧
-
然后上网搜索各种解决办法
- 方案一:更改安装目录下my.ini中的客户端默认字符集为gbk
# 设置mysql客户端默认字符集 default-character-set=gbk
经过尝试,可以插入中文了,但是在对插入的数据进行查询时,中文一直显示为问号
select * from exam;
- 方案二:各种更改编码表——无果;
2.解决办法
-
一顿纠结之后,决定下载最新版的MySQL数据库安装进行又一轮的尝试;
-
操作流程
-
首先去官网下载最新版的MySQL数据库软件点我进入MySQL官网
-
下载第一个184.1M的即可;
-
将下载好的软件解压缩并复制到C盘或其他磁盘下;其中my.ini是后面添加的。
-
在系统环境变量Path中添加MySQL的安装路径,如图所示。
-
配置初始化的my.ini文件
刚解压的文件中没有my.ini,所以在桌面新建一个txt文档,将下列代码复制保存后,更改txt文档为my.ini,并保存后,复制到安装的根目录。
# 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=C:\Program Files\MySQL # 设置mysql数据库的数据的存放目录 datadir=C:\Program Files\MySQL\Data # 允许最大连接数 max_connections=200 # 允许连接失败的次数。 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 #mysql_native_password default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8
- 安装MySQL
确保在安装过程中使用管理员模式进入powershell进行安装
-
win+x 进入powershell管理员模式
-
进入MySQL安装路径。其中一步指令,在cd 进入一个文件夹的时候,如果这个文件夹中包含空格或啥字符之类的,需要将该文件夹用双引号包起来。
-
执行
mysqld --initialize --cosole
注意
倒数第三排 root@localhost: 之后的内容为初试密码,在更改密码之前需要记录下来。
-
再执行
mysqld --install net start mysql
-
到此就安装完成了,再启动mysql后更改一下自己的密码就完事儿了。可以参考致谢中的博主提供的方法。
-
经过测试,完美输入输出中文。
-
3.反思
这次问题的解决过程中,涉及到很多关于字符集的问题,需要进一步了解。关于中文乱码的问题,花了好几天时间,之前一直抱在在不装新软件的前提下进行解决问题的尝试,无果。需要的时候还是要尝试新方法呀,比如重新装一下软件。第一次写这样的东西,很紧张,手动狗头。
4.致谢
安装MySQL最新版的方法步骤参考来源CSDN:点我查看原文