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
を増やすために誰でも助けてくれますか。
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_packet = 32505856 #max_allowed_packetを256M(またはその他の値)に設定します 環境: -MYSQL_ROOT_PASSWORD = password -MYSQL_DATABASE = db -MYSQL_USER = user -MYSQL_PASSWORD = user_password
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ドッカーイメージでは機能しますが、デフォルトのコマンドを上書きするため、すべてで機能するとは限りません。
Dockerfileで次のように変更する必要があると思います。
RUN sed -ire 's/max_allowed_packet.*=.*/max_allowed_packet = YOURVALUE/g' /etc/mysql/my.cnf