zoukankan      html  css  js  c++  java
  • mysql容器乱码问题

    在docker-compose.yml文件中定义mysql导入utf-8的万国码

    services:

      mysql:

        image: mysql:5.7

    #    command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']

        volumes:

          - ./data/docker/mysql:/var/lib/mysql

          - ./mysql/:/docker-entrypoint-initdb.d/

          - ./conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf

          - ./sqlfile:/app/sqlfile

        environment:

          - "MYSQL_DATABASE=apigateway-ai"

          - "MYSQL_USER=appuser"

          - "MYSQL_PASSWORD=123456"

          - "MYSQL_ROOT_PASSWORD=root"

        ports:

            - "3306:3306"

        restart: always

        logging:

          driver: "json-file"

          options:

            max-size: “1g”

    启动spring Boot框架后,web平台显示乱码。

    进入mysql容器,查看字符集mysql> show variables like '%char%';
    发现character_set_client和character_set_server等字符集仍然不是utf-8;

    解决:在宿主机的cnf文件中定义字符集default-character-set = utf8mb4,再映射到容器里,同时取消compose文件中导入utf-8的command命令。

    # For explanations see

    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html

    [client]

    default-character-set = utf8mb4   #定义字符集

    [mysql]

    default-character-set = utf8mb4   #定义字符集

    [mysqld]

    pid-file = /var/run/mysqld/mysqld.pid

    socket = /var/run/mysqld/mysqld.sock

    datadir = /var/lib/mysql

    character-set-client-handshake = FALSE

    character-set-server = utf8mb4

    collation-server = utf8mb4_unicode_ci

    lower-case-table-names=1    #解决数据库读取区分大小写问题

    重启docker后,web平台显示正常。

    结束。

  • 相关阅读:
    Centos7 安装RabbitMQ 3.6.1
    面向对象编程(类的绑定方法与非绑定方法)
    面向对象编程(封装、封装的意义、封装与扩展性、@property)
    函数式编程(__slots__)
    面向对象编程(实例属性、类属性)
    面向对象编程(获取对象信息)
    面向对象编程(继承、多态)
    函数式编程(访问限制)
    面向对象编程(类与实例)
    面向对象编程(基础简介)
  • 原文地址:https://www.cnblogs.com/liusingbon/p/12846699.html
Copyright © 2011-2022 走看看