2016-09-07 95 views
2

我們使用泊塢爲MySQL,我們正面臨着下面的錯誤,同時運行增加max_allowed_pa​​cket的大小

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

回答

8

作爲參數傳遞給容器命令:在https://hub.docker.com/_/mysql/

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

請參閱 「沒有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鍵與AR guments:

 
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 
+0

泊塢窗撰寫文件中的任何幫助? –

+0

我是否必須使用docker-compose文件重建?或接下來應該做什麼?運行'docker-compose down'然後再'啓動'? –

3

我想你應該修改它在你的Dockerfile這樣的:

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

2

當使用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

相關問題