• 怎么在docker容器的mysql的编码格式变为utf8


    第一个方法:

    1、  编辑MySql的配置文件

    MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my.ini,可以搜索,Linux下一般是/etc/my.cnf

    --在 [mysqld] 标签下加上以下内容:

    default-character-set = utf8

    character_set_server = utf8

    注意:如果此标签下已经存在“default-character-set=GBK”类似的内容,只需修改即可。

    --在 [mysql]  标签下加上一行

    default-character-set = utf8

    --在 [mysql.server]标签下加上一行

    default-character-set = utf8

    --在 [mysqld_safe]标签下加上一行

    default-character-set = utf8

    --在 [client]标签下加上一行

    default-character-set = utf8

    2、  重新启动MySql服务

    Windows可在服务管理器中操作,也可使用命令行:

    net stop mysql 回车

    net start mysql 回车

    服务名可能不一定为mysql,请按自己的设置

    Linux下面可是用 service mysql restart

    第二个方法:

    设置外部访问的编码

    set names "utf8";

    然后查看表中的中文是否改变,好像只是暂时改变的。

    第三个方法:

    手把手教你如何在mysql 中使用中文编码

    1.首先在docker中拉取好一个最新的mysql镜像以后,创建一个容器:

    docker run  -d -p 13306:3306 -e MYSQL_ROOT_PASSWORD=xxxxxx--name MYDB mysql
    

      

    参数的解释:

    • -d 设置detach为true
    • -p port 映射端口 13306
    • -e environment 设置密码 xxxxx

    2. docker ps 查看mysql容器是否启动,进去容器

    docker exec -ti xxx(容器id) /bin/bash

    理论上应该启动正常 进去容器内部

    3.查看mysql密码 是否正常

    mysql -u root -p

    在提示下输入密码 xxxxx 正常情况下,应该出现以下提示符mysql>

    !!重点来了!!

    1.前期工作 查看当前mysql字符集情况

    mysql>SHOW VARIABLES LIKE 'character_set_%';//查看数据库字符集

    基本上都如下图所示:默认就是瑞典latin1 

    SHOW VARIABLES LIKE 'collation_%';

    图上的第一个 connection 就是我们通过workbench等客户端连接的时候指定的编码。 
    外部访问数据乱码的问题就出在这个connection连接层上

    1.先解决外部访问数据乱码的问题

    SET NAMES 'utf8';

    它相当于下面的三句指令:

    SET character_set_client = utf8;
    SET character_set_results = utf8;
    SET character_set_connection = utf8;

    2.创建数据库,创建表的时候,包括设置字段的时候也要加上字符集设置:

    例如

    create database MYDB character set utf8;
    
    use JSPDB;
    create table  t_product(
    pid     varchar(20),
    pname    varchar(20),
    price    double,
    address   varchar(30)
    ) DEFAULT CHARSET=utf8;

    3.如果你应经有建立了数据库,也可以通过以下语句修改字符集

    当然 如果是刚刚建容器的时候 我想你肯定是没有数据库的,所有此步跳过

    alter database name character set utf8;#修改数据库成utf8的.
    alter table type character set utf8;#修改表用utf8.
    alter table type modify type_name varchar(50) CHARACTER SET utf8;#修改字段用utf8

    4.这一步是很重要的来修改配置文件

    mysql容器的配置文件在哪呢? 
    我们进去容器。不输入mysql -u root -p(即登录数据库) 
    配置文件在etc/mysql/mysql.conf.d/mysql.cnf这个文件里头 

    我们找到这个文件 编辑他vi mysql.cnf,在使用docker容器时键入vim命令时提示: 
    vim: command not found 
    这个时候就需要安装vim 
    这时候需要敲:

    apt-get update

    等更新完毕以后再敲命令:

    apt-get install vim

    然后你发现vim 编辑器可以使用以后,在此文件中添加如下字段 
    在 [mysqld] 标签下加上三行

    default-character-set = utf8
    character_set_server = utf8

    在 [mysql] 标签下加上一行

    default-character-set = utf8

    在 [mysql.server]标签下加上一行

    default-character-set = utf8

    在 [mysqld_safe]标签下加上一行

    default-character-set = utf8

    在 [client]标签下加上一行

    default-character-set = utf8

    修改结果如下:

    那么如何检验成功了呢?

    还记得我们怎么检查mysql字符集编码的吗 ?

    SHOW VARIABLES LIKE 'character_set_%';

    我们发现有很多都变成utf8了

    SHOW VARIABLES LIKE 'collation_%';

    以上基本的工作都做完了。

  • 相关阅读:
    一个奇怪的网页bug 竟然是局域网DNS搞的鬼
    繁体系统下如何快速将简体安装文件乱码恢复正常?
    Ubuntu16.04LTS国内快速源
    bitnami redmine版本由2.3.1升级至3.2.2过程
    Ubuntu1404安装gogs过程
    AJAX
    jQuery 事件解释
    安装phpMyadmi报错
    总结二
    总结
  • 原文地址:https://www.cnblogs.com/qiaoxin/p/10844492.html
Copyright © 2020-2023  润新知