美文网首页我爱编程
MySQL数据库的编码

MySQL数据库的编码

作者: 响亮响亮 | 来源:发表于2018-02-06 11:30 被阅读0次

    最近遇到不同终端显示MySQL数据中文乱码的问题,故记录一下。

    一、本机安装MySQL

    环境:windows 10
    MySQL版本:5.7.18 MySQL Community Server (GPL) 解压缩免安装版
    将文件解压缩到某个文件目录,如我的路径为:E:\BigData\tools。
    此时mysql的根目录会有一个my-default.ini文件,这是MySQL的配置文件,配置说明请参考MySQL配置文件-my.ini

    1.1配置环境变量

    MySQL_HOME E:\BigData\tools\mysql\bin,如图


    环境变量.png
    1.2 my-default.ini文件中增加数据目录配置
    #Path to installation directory. All paths are usually resolved relative to this.
    basedir="E:/BigData/tools/mysql"
    
    #Path to the database root
    datadir="E:/BigData/tools/mysql/data"
    
    # The default character set that will be used when a new schema or table is
    # created and no character set is defined
    
    1.3 mysql 初始化

    参见官方文档MySQL初始化
    进入命令行,输入'mysqld --initialize-insecure --user=mysql --console'回车,如果提示mysqld命令不是内部或外部命令,说明环境变量未配置好。

    其中'mysqld --initialize-insecure'表示初始化为root账号,无密码;如果没有'-insecure',则表示初始化为一个随机密码。
    '--user=mysql ' 参数如果没有,则启动的时候会报错,缺少一个什么东西。
    等待一会,如果没有报错,说明初始化成功。

    1.4 注册MySQL服务,并启动

    执行命令'mysqld install',即注册mysql服务;
    执行命令'net start mysql', 启动mysql服务。

    1.5遇到的问题

    参见官方文档MySQL默认配置
    a: 初始化未加'--user=mysql'参数,导致install失败,缺少组件;
    b: 网查资料,my-default.ini可以改为my.ini,还有些说my.ini放到\bin目录下,我就遇到了错误。经证实:my-default.ini可以改为my.ini,就放在安装的根目录;
    c: 'mysql install' 不要带参数,之前带参数指定my-default.ini配置文件,然后目录下如果有my.ini就要报错。my-default.ini可以改为my.ini,install不带指定参数即可,官方文档也说了会自动使用my.ini为配置文件。

    二、MySQL编码设置

    连接上MySQL服务后,可通过show variables like 'char%';查看各个字符编码的设置,如:

    字符编码.png
    因my.ini中配置不同,字符编码可能不同。
    2.1 编码设置

    这里仅以中文为例。
    my.ini中
    [mysqld]节点下配置character-set-server=utf8
    对应character_set_database/character_set_server/character_set_system的编码。
    [client]节点配置 default-character-set=gbk
    对应character_set_client/character_set_connection/character_set_resuts的编码。

    2.2 注意事项

    my.ini中编码设置后,执行命令'sc delete mysql'删除mysql服务;
    执行命令'mysqld --initialize-insecure --user=mysql --console'初始化服务;
    执行命令'mysqld install'注册服务;
    执行命令'net start mysql'启动服务。
    必须新建数据库和表,新建的数据库和表的字符集才为配置中设置的字符集,如图:

    修改后字符编码.png
    这样命令行显示中文就正常了。

    三、Navicat中文乱码

    先断开连接,再编辑连接,编码中选择'自动',中文即正常了。


    navicat连接设置.png

    至此:Navicat、Java代码、MySQL命令行,三处的插入及显示中文均正常。

    相关文章

      网友评论

        本文标题:MySQL数据库的编码

        本文链接:https://www.haomeiwen.com/subject/heawzxtx.html