Home Operation and Maintenance Docker Analyze and solve the problem of mysql garbled code in docker

Analyze and solve the problem of mysql garbled code in docker

Apr 25, 2023 am 09:19 AM

Docker is a popular containerization platform that makes application deployment and management easier and more efficient. The MySQL database is an integral part of many applications. However, when using MySQL in Docker, you sometimes encounter garbled characters, which not only affects the correctness of the data, but also brings unnecessary trouble to developers.

This article will introduce the garbled problem of MySQL in Docker and possible solutions.

1. The garbled code problem of MySQL in Docker

Garbled code means that the data queried on the client does not meet expectations, and there are some unrecognizable characters or behaviors.

This problem is very common when running MySQL in Docker. Especially when the encoding method of the MySQL database is set to UTF-8, the following situations may occur:

1. When inserting data, the normal Chinese or other language characters of the data become some random characters.

2. When the client queries data, the returned data contains a large number of garbled characters.

Actually, these problems are not caused by Docker or MySQL itself, but due to some incorrect settings and configurations.

2. Solution to MySQL in Docker

1. Check the data source character set

The root cause of garbled characters is that the character set of the database is inconsistent with the character set of the data source. We need to confirm whether the character set of the data source is UTF-8 to ensure the correctness of data transmission between different systems.

Check the MySQL default character set through the following command in MySQL:

show variables like 'character%';
Copy after login

The character_set_client, character_set_connection and character_set_results in the displayed results should all be utf8mb4. If not, it may cause garbled characters.

To run MySQL in Docker, you need to add the following parameters to the Dockerfile or Docker-compose configuration file:

...
environment:
  MYSQL_ROOT_PASSWORD: root
  MYSQL_DATABASE: test
  MYSQL_USER: test
  MYSQL_PASSWORD: test
  MYSQL_CHARSET: utf8mb4
  MYSQL_COLLATION: utf8mb4_unicode_ci
...
Copy after login

Among them, MYSQL_CHARSET and MYSQL_COLLATION are the character set and sorting method respectively.

2. Modify the MySQL configuration file

When running MySQL in Docker, you can also modify the MySQL configuration file to achieve the correct character set and sorting method.

Enter the MySQL configuration file my.cnf and add the following configuration at the bottom:

[mysql]
default-character-set=utf8mb4

[mysqld]
collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4
skip-character-set-client-handshake
Copy after login

To run MySQL in Docker, you need to copy my.cnf to the container first:

...
volumes:
  - ./my.cnf:/etc/mysql/conf.d/my.cnf
...
Copy after login

3. Check the MySQL client character set

When running MySQL in Docker, you need to ensure that the character set of the client (such as the operating system and MySQL client tools, etc.) is also UTF-8.

In Linux, you can check the character set of the current system through the following command:

$ echo $LANG
Copy after login

If LANG returns other character sets, you need to add the LANG environment variable to your shell configuration file:

$ echo "export LANG='en_US.utf8'" >> ~/.bashrc
Copy after login

In Windows systems, you need to ensure that the character set of the client tool (such as Navicat, etc.) is also UTF-8.

4. Set MySQL column attributes

In MySQL, the character set and collation rules in the column attributes will also affect the correctness of the query results. By default, the column properties of a new MySQL table adopt the default settings of the MySQL server. If the character set and collation of the MySQL server do not match, garbled characters may result.

In order to solve this problem, you can manually set the column attributes to:

CREATE TABLE test (
  name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
...
);
Copy after login

The above are some solutions to the garbled problem of MySQL in Docker. Developers can choose a method that suits them according to their own needs and actual situation. In a production environment, in order to ensure system stability and reliability, application deployment and configuration need to be carefully tested and verified.

The above is the detailed content of Analyze and solve the problem of mysql garbled code in docker. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to exit the container by docker How to exit the container by docker Apr 15, 2025 pm 12:15 PM

Four ways to exit Docker container: Use Ctrl D in the container terminal Enter exit command in the container terminal Use docker stop <container_name> Command Use docker kill <container_name> command in the host terminal (force exit)

How to check the name of the docker container How to check the name of the docker container Apr 15, 2025 pm 12:21 PM

You can query the Docker container name by following the steps: List all containers (docker ps). Filter the container list (using the grep command). Gets the container name (located in the "NAMES" column).

How to copy files in docker to outside How to copy files in docker to outside Apr 15, 2025 pm 12:12 PM

Methods for copying files to external hosts in Docker: Use the docker cp command: Execute docker cp [Options] <Container Path> <Host Path>. Using data volumes: Create a directory on the host, and use the -v parameter to mount the directory into the container when creating the container to achieve bidirectional file synchronization.

How to restart docker How to restart docker Apr 15, 2025 pm 12:06 PM

How to restart the Docker container: get the container ID (docker ps); stop the container (docker stop <container_id>); start the container (docker start <container_id>); verify that the restart is successful (docker ps). Other methods: Docker Compose (docker-compose restart) or Docker API (see Docker documentation).

How to start mysql by docker How to start mysql by docker Apr 15, 2025 pm 12:09 PM

The process of starting MySQL in Docker consists of the following steps: Pull the MySQL image to create and start the container, set the root user password, and map the port verification connection Create the database and the user grants all permissions to the database

Docker Volumes: Managing Persistent Data in Containers Docker Volumes: Managing Persistent Data in Containers Apr 04, 2025 am 12:19 AM

DockerVolumes ensures that data remains safe when containers are restarted, deleted, or migrated. 1. Create Volume: dockervolumecreatemydata. 2. Run the container and mount Volume: dockerrun-it-vmydata:/app/dataubuntubash. 3. Advanced usage includes data sharing and backup.

How to update the image of docker How to update the image of docker Apr 15, 2025 pm 12:03 PM

The steps to update a Docker image are as follows: Pull the latest image tag New image Delete the old image for a specific tag (optional) Restart the container (if needed)

How to start containers by docker How to start containers by docker Apr 15, 2025 pm 12:27 PM

Docker container startup steps: Pull the container image: Run "docker pull [mirror name]". Create a container: Use "docker create [options] [mirror name] [commands and parameters]". Start the container: Execute "docker start [Container name or ID]". Check container status: Verify that the container is running with "docker ps".

See all articles