Mysql: изменить кодировку на UTF-8 - PullRequest
1 голос
/ 26 мая 2020

Я пытаюсь настроить Confluence с docker - mysql. Я выполнил все инструкции, которые мог найти на net, и Confluence по-прежнему дает мне Your database must be configured to either use utf8 or utf8mb4 as the default character set.

Вот мой docker -compose:

version: '3.3'
services:
  db:
    image: mysql:5.7
    volumes:
            - ./mycustom.cnf:/etc/mysql/conf.d/my.cnf
    restart: always
    command: --sql_mode=""
    environment:
      MYSQL_DATABASE: bachelorarbeit_database
      # So you don't have to use root, but you can if you like
      MYSQL_USER: horizon
      # You can use whatever password you like
      MYSQL_PASSWORD: 1P@ssw0rt123
      # Password for root access
      MYSQL_ROOT_PASSWORD: P@ssw0rt
      MYSQL_ROOT_USER: root
    ports:
      # <Port exposed> : < MySQL Port running inside container>
      - '3310:3306'

Вот mycustom.cnf который находится в том же каталоге, что и docker -compose

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin
default-storage-engine=INNODB
max_allowed_packet=256M
innodb_log_file_size=2GB
transaction-isolation=READ-COMMITTED
binlog_format=row

Вот файл my.cnf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin
default-storage-engine=INNODB
max_allowed_packet=256M
innodb_log_file_size=2GB
transaction-isolation=READ-COMMITTED
binlog_format=row

1 Ответ

1 голос
/ 06 июня 2020

Кажется, что по умолчанию при создании базы данных MySQL с помощью docker -compose по умолчанию используется latin1.

Вы можете переопределить это, передав следующую команду в свой db service:

command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci --init-connect='SET NAMES UTF8;' --innodb-flush-log-at-trx-commit=0

Я не уверен, что --sql_mode="" там делает, просто передает аргумент команде по умолчанию? В таком случае вы, вероятно, добавили бы это в список аргументов.

После того, как вы перезапустили свои контейнеры, вы можете войти в систему mysql и запустить следующую SQL, чтобы подтвердить, что это теперь UTF-8:

mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8                     | utf8_unicode_ci      |
+--------------------------+----------------------+
1 row in set (0.00 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...