Как настроить экземпляр MySQL с флагом многострочной команды в docker-compose.yml - PullRequest
1 голос
/ 24 октября 2019

Я хочу запустить локальный экземпляр MySQL с использованием образа докера.

Пока мой docker-compose.yml файл выглядит так:

version: '3.3'

services:
   db:
     image: mysql:8
     command: --default-authentication-plugin=mysql_native_password
     volumes:
       - ./mysql-dump:/docker-entrypoint-initdb.d
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: admin
       MYSQL_DATABASE: sqlPractice
       MYSQL_USER: admin
       MYSQL_PASSWORD: admin
     ports:
      - '7142:3306'
     security_opt:
      - seccomp:unconfined

До этого момента все работало. Моя база данных снабжена данными, но после выполнения одного запроса, например:

SELECT DISTINCT surname, name, data FROM exams e JOIN students s ON e.`id-student` = s.`id-student` WHERE passed='Y' AND (data, `id-centre`) = (SELECT MIN(data), e.`id-centre` FROM exams e JOIN centers c ON e.`id-center` = c.`id-center` WHERE e.passed='Y' AND c.`center-name` = 'IT Institute') 

Я получаю сообщение об ошибке:

ER_MIX_OF_GROUP_FUNC_AND_FIELDS: In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'sqlPractice.e.id-center'; this is incompatible with sql_mode=only_full_group_by

Согласно этому сообщению: нажмите Я хочу установить параметр sql_mode в моем docker-compose.yml, потому что якобы это решит проблему.

Мой docker-compose.yml с двумя параметрами в флаге команды выглядит так:

version: '3.3'

services:
   db:
     image: mysql:8
     command: 
       - default-authentication-plugin=mysql_native_password 
       - sql_mode=""
     volumes:
       - ./mysql-dump:/docker-entrypoint-initdb.d
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: admin
       MYSQL_DATABASE: sqlPractice
       MYSQL_USER: admin
       MYSQL_PASSWORD: admin
     ports:
      - '7142:3306'
     security_opt:
      - seccomp:unconfined

, но в конце концов я получаю сообщение об ошибке при запуске

db_1  | /usr/local/bin/docker-entrypoint.sh: line 363: exec: default-authentication-plugin=mysql_native_password: not found

и после всего контейнеране работает должным образом.

Все, чего я хочу добиться, это настроить экземпляр MySQL через docker-compose.yml с этими двумя параметрами в command param в docker-compose.yml, чтобы мой запрос работал так, как он предполагал.

Буду благодарен за предложения о том, как достичь цели.

Ответы [ 2 ]

2 голосов
/ 24 октября 2019

команда должна быть:

--default-authentication-plugin=mysql_native_password
--sql_mode=

с --

, и вы не можете указать «» в качестве значения --sql_mode, иначе вы получите ошибку:

 Error while setting value '""' to 'sql_mode'
1 голос
/ 24 октября 2019
services:
  db:
    image: mysql:8
    command: ['--sql_mode=', '--default-authentication-plugin=mysql_native_password']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...