您的位置:首页 > 编程语言 > Java开发

Win7 32位MySQL5.6免安装配置编码为utf8——解决Java插入MySQL乱码问题

2016-01-18 00:09 926 查看
交代背景:

刚开始使用mysql时,使用的免安装版,虽然需要配置,但相对来说要简单的很多。参考资料为:MySQL 5.6 for Windows 解压缩版配置安装。

后来在用Java往MySQL中插入含有中文的字符时,用Navicat for MySQL来查看,中文总是乱码为??。多方面查找博客和资料,才发现之前的安装其实是有缺陷的,没有配置编码方式,如下图所示,就是参考资料1中的配置文件my.ini。



注:该篇博客中,使用了管理员身份去install mysql,但后期使用mysql service时比较麻烦,而且默认的字符编码是latin1,没法借用ini配置文件实现编码utf8,故不采用本篇博文。

这一次的安装和配置参考资料:mysql 5.6.14 win7 32位免安装版配置

1、移除mysql服务

如果你之前安装过mysql,就需要把之前的mysql服务移除。在dos窗口下的mysql下使用如下命令(1)和(2)都可以:

(1)mysqld-ne --remove      不过我使用该命令无效

(2)mysqld -remove   (管理员)

2、下载mysql5.6,截止到2016-1-17,已经发布到5.7.10,下载地址http://dev.mysql.com/downloads/mysql/,如果想获得之前的各种版本http://downloads.mysql.com/archives/community/



3、解压到自定义目录,我的解压目录是F:\MySQL Server\mysql-5.6.16-win32

4、将该路径下的my-default.ini,改名为my.ini,

<span style="font-size:18px;">[mysqld]
#绑定IPv4和3306端口
bind-address=0.0.0.0
port=3306
#设置mysql的安装目录,即解压路径
basedir=F:/MySQL Server/mysql-5.6.16-win32
#设置mysql数据库的数据存放目录
datadir=F:/MySQL Server/mysql-5.6.16-win32/data
# 允许最大连接数
max_connections=200</span><span style="font-size: 14.44444465637207px;">
</span><span style="font-size:18px;">#设置字符集为utf8
character-set-server=utf8

[client]
#设置客户端字符集
port=3306
default-character-set = utf8  </span>




在[mysqld]部分添加basedir和数据路径datadir,以及字符集charater-set-server=utf8;如果mysql版本小于5.1则需用“default-character-set = utf8 ”

[client]部分添加上default-character-set = utf8 

5、配置mysql的环境变量

配置环境变量的好处就是在打开dos窗口后可以直接输入相关命令,不用再cd到安装目录\bin下。

(1)计算机——右击,属性——高级系统设置——环境变量;

(2)在系统变量中,新建,变量名——mysql_home

    变量值——F:\MySQL Server\mysql-5.6.16-win32

变量值为mysql解压目录



(3)找到path,在最前面输入%mysql_home%\bin;  一定加上分号

%mysql_home%\bin;




6、以管理员身份启动cmd.exe,(方法:在开始,运行栏,输入cmd,在上面出现cmd.exe,右击以管理员身份运行),(很重要,否则有权限问题,会报错:Install/Remove
of the Service Denied!)。

(1) 安装mysql service

进入mysql解压目录bin子目录下(在system32后直接输入),输入mysqld install MySQL --defaults-file="你的解压根目录\my.ini",

mysqld install MySQL --defaults-file="F:\MySQL Server\mysql-5.6.16-win32\my.ini"
会出现service successfully installed.





(一开始无MySQL服务,控制面板——管理工具——服务)

(2)启动mysql service

我在启动mysql service时出现了错误,命令为net start mysql

根据博客http://blog.csdn.net/fzhmoive/article/details/20042437中的提议,删除data目录下的ib_logfile0和ib_logfile1文件。结果再尝试未解决,通过查询mysql
1067发现是自己的ini配置文件有错误,文件夹写错了,修改后正常启动service。

(1)删除data目录下的ib_logfile0和ib_logfile1文件

(2)检查my.ini中的basedir和datadir的路径是否正确






(启动后有服务)

7、查看mysql的默认编码

在mysql下输入show variables like 'char%';

<span style="font-size:18px;">show variables like 'char%';</span>




至此,数据库的默认编码就是utf8了,后面我自己将探索,利用java插入到mysql的中文字符是否会是乱码。



后记:

服务器的MySQL版本是5.0.X,而我的笔记本上的MySQL版本是5.6.16。将在我的电脑上运行无误的程序(***.jar)安装到服务器上,没有jdk版本问题,运行后在Navicat for MySQL上总是显示在14544行,而jar程序一直在运行且无误,剩余的都没有;当我升级MySQL版本为5.6.16后,奇迹发生了,那个数据库文件(程序运行停止了,不再插入数据),竟然显示完全,为60000+行。

唉,这么个小问题害我又是改代码,又是加入可视化异常显示,又是重新设计数据表,浪费了近两天时间,没想到升级MySQL版本后一下就解决了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: