본문 바로가기
MySql

MySQL docker-compose를 사용하여 mysql의 기본 문자 집합을 변경하는 방법은 무엇입니까?

by 베이스 공부 2020. 10. 25.
반응형

중국어 문자열을 저장하면 mysql에서 "Exception Value :
(1366, "잘못된 문자열 값 : '\ xE5 \ xB0 \ x8F \ xE6 \ x98 \ x8E'for column 'name'at row 1") ", mysql의 문자를 확인하면 다음과 같이 표시됩니다.

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

그리고 내 docker-compose.yml은 동료입니다.

web:
    image: yetongxue/docker_test:1.2
    links:
      - "db"
    ports:
      - "8100:8000"
    volumes:
      - "/Users/yetongxue/docker_v/docker_test/media:/root/media"
    restart: always

db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: qwerasdf
      MYSQL_DATABASE: docker_db
    restart: always
    volumes:
      - "/Users/yetongxue/docker_v/docker_test/db:/var/lib/mysql"

my.cnf로 mysql의 캐릭터를 설정하는 방법을 알고 있지만 docker-compose.yml에서 어떻게 할 수 있습니까? 아는 사람 있어요? 감사!

 

해결 방법

 

my.cnf를 수정하는 자체 mysql 이미지를 빌드하거나 -character-set-server = utf8mb4 -collation-server =를 사용하여 mysql의 데몬을 시작하는 명령을 수정할 수 있습니다. utf8_unicode_ci .

web:
    image: yetongxue/docker_test:1.2
    links:
      - "db"
    ports:
      - "8100:8000"
    volumes:
      - "/Users/yetongxue/docker_v/docker_test/media:/root/media"
    restart: always

db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: qwerasdf
      MYSQL_DATABASE: docker_db
    restart: always
    volumes:
      - "/Users/yetongxue/docker_v/docker_test/db:/var/lib/mysql"
    command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']


 

참조 페이지 https://stackoverflow.com/questions/45729326

 

 

반응형

댓글