увеличить максимальный размер пакета в MySQL докер
мы используем настройки для mysql мы сталкиваемся с приведенной ниже ошибкой во время работы
Packet for query is too large (12884616 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.; nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (12884616 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.
Теперь нам нужно увеличить max_allowed_packet
в размере в MySQL конфигурация, может ли кто-нибудь помочь мне по команде docker увеличить max_allowed_packet
.
3 ответов
в качестве аргумента для команды контейнера:
docker run -it -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:5.7 --max-allowed-packet=67108864
см. "конфигурации без КНФ файл"https://hub.docker.com/_/mysql/, скопировано здесь для потомков:
конфигурация без файла cnf много вариантов конфигурации могут быть передано как флаги в mysqld. Это даст вам возможность настройте контейнер без использования файла cnf. Например, если вы хотите изменить кодировку и параметры сортировки по умолчанию для всех таблицы чтобы использовать UTF-8 (utf8mb4), просто выполните следующее:
$
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
если вы хотите увидеть полный список доступных вариантов, просто запустите:
$
docker run -it --rm mysql:tag --verbose --help
при использовании docker-compose
(как указано в комментариях), добавьте command
ключ с аргументами:
version: "3" services: data: image: "mysql:5.7.20" command: --max_allowed_packet=32505856 # Set max_allowed_packet to 256M (or any other value) environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_DATABASE=db - MYSQL_USER=user - MYSQL_PASSWORD=user_password
Я думаю, вы должны изменить его в своем Dockerfile следующим образом:
RUN sed -ire 's/max_allowed_packet.*=.*/max_allowed_packet = YOURVALUE/g' /etc/mysql/my.cnf
при использовании docker-compose
(как указано в комментариях), добавьте command
ключ с аргументами, например:
version: "3"
services:
data:
image: "mysql:5.7.20"
# Set max_allowed_packet to 256M (or any other value)
command: --max_allowed_packet=32505856
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=db
- MYSQL_USER=user
- MYSQL_PASSWORD=user_password
хотя это работает для изображений MySQL docker, это может не работать для всех, это перезаписывает команду по умолчанию.
Подробнее: Docker Compose-Команда