最近开始新的项目,新项目使用mysql数据库。环境都搭好了,一切准备就绪系统跑起来了,结果发现在系统中新建一条数据出现了问题。
针对这个我首先猜测是mysql编码的问题,在cmd中使用mysql的命令行查看发现mysql中的编码方式是latin1的编码方式。于是乎看了项目的编码方式是utf8 的编码方式。所以问题应该是mysql 的编码方式的问题。
show variables like 'character%'; 命令查看mysql 的编码方式
然后网上有一堆关于修改编码方式的文章,通常都是使用命令行方式修改,
MYSQL>set character_set_client = ''utf8'' ;
MYSQL>set character_set_connection = ''utf8'' ;
MYSQL>set character_set_results= ''utf8'' ;
MYSQL>set character_set_server= ''utf8'' ;
通常使用命令执行之后,再一次使用show variables like 'character%' ;可以看到编码编码都做了相应的改变。
本能的我想重新启动mysql服务,重新部署应用发现还是插入中文是出现???
这时我在一次看一下mysql 的编码方式,发现mysql的编码方式已经发生了改变,编码方式用变成原来默认的lantin1编码方式了。
这是怎么回事,我百思不得其解,可能是更新的时候没有commit的原因吗? 我重新有一次试了一遍,发现还是存在相同的原因。
网上百度了一下,原因,发现这种使用命令行的方式更改编码是一种热更改方式,及不能电脑重启或者服务重新启动都会将原来的设置还原的现象。
最终还是使用永久更改方式将mysql编码方式进行更改,就是改变mysql安装目录下的my.ini文件,添加
[client]
port=3306
[mysql]
default-character-set=utf8
character-set-server=utf8