Nous utilisons Docker pour mysql, nous sums confrontés à l’erreur ci-dessous en cours d’exécution
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.
Maintenant, nous devons augmenter la taille de max_allowed_packet
dans la configuration de mysql . Quelqu’un peut-il m’aider avec la commande docker pour augmenter max_allowed_packet
.
Comme argument de la commande container:
docker run -it -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:5.7 --max-allowed-packet=67108864
Voir “Configuration sans fichier cnf” sur https://hub.docker.com/_/mysql/ , copié ici pour la postérité:
Configuration sans fichier cnf De nombreuses options de configuration peuvent être transmises sous forme de drapeaux à mysqld. Cela vous donnera la possibilité de personnaliser le conteneur sans avoir besoin d’un fichier cnf. Par exemple, si vous souhaitez modifier l’encodage et le classement par défaut pour que toutes les tables utilisent UTF-8 (utf8mb4), exécutez simplement ce qui suit:
$
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
Si vous souhaitez voir une liste complète des options disponibles, exécutez simplement:
$
docker run -it --rm mysql:tag --verbose --help
Lorsque vous utilisez docker-compose
(comme demandé dans les commentaires), ajoutez une clé de command
avec les arguments:
version: "3" prestations de service: Les données: image: "mysql: 5.7.20" commande: --max_allowed_packet = 32505856 # Définit max_allowed_packet à 256M (ou toute autre valeur) environnement: - MYSQL_ROOT_PASSWORD = mot de passe - MYSQL_DATABASE = db - MYSQL_USER = utilisateur - MYSQL_PASSWORD = mot_de_passe_utilisateur
Je pense que vous devriez le modifier dans votre fichier Dockerfile comme ceci:
RUN sed -ire 's/max_allowed_packet.*=.*/max_allowed_packet = YOURVALUE/g' /etc/mysql/my.cnf
Lorsque vous utilisez docker-compose
(comme demandé dans les commentaires), ajoutez une clé de command
avec les arguments, par exemple:
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
Bien que cela fonctionne pour les images du docker de MySQL, cela peut ne pas fonctionner pour tous car cela écrase la commande par défaut.
Plus d’infos: Docker Compose – Command