web-dev-qa-db-ja.com

mysql dockerでmax_allowed_pa​​cketサイズを増やします

MysqlにDockerを使用しています。実行中に次のエラーに直面しています。

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.

mysql構成でmax_allowed_packetサイズを増やす必要があります。dockerコマンドでmax_allowed_packetを増やすために誰でも助けてくれますか。

16

Containerコマンドの引数として:

docker run -it -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:5.7 --max-allowed-packet=67108864

https://hub.docker.com/_/mysql/ の「cnfファイルを使用しない構成」を参照してください。

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キーを追加します。

バージョン: "3" 
 services:
 data:
 image: "mysql:5.7.20" 
コマンド:--max_allowed_pa​​cket = 32505856 #max_allowed_pa​​cketを256M(またはその他の値)に設定します
環境:
-MYSQL_ROOT_PASSWORD = password 
-MYSQL_DATABASE = db 
-MYSQL_USER = user 
 -MYSQL_PASSWORD = user_password 
39
chrishiestand

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 Compose-Command

9
r89m

Dockerfileで次のように変更する必要があると思います。

RUN sed -ire 's/max_allowed_packet.*=.*/max_allowed_packet = YOURVALUE/g' /etc/mysql/my.cnf

4
r4phG