如何修改MySQL的max_allowed_packe變數?

使用的MySQL版本: 5.1 作業系統版本: Vista Ultimate 64 bit

因為我想加大原本只有1048576 bytes的容許封包量,試了下面在網路上找個二種方式,都無法修改max_allowed_packe這個環境變數,並導致發生錯誤.

方法1:

直接在命令列下達 mysqld --max_allowed_packet=16M 結果就停住了,沒有任何回應. 書上說如果想要改client的值就用mysql,如果是想要改Server的值就用mysqld.我不太懂Client跟Server代表的意思??

圖片參考:http://l.yimg.com/f/i/tw/ugc/rte/smiley_6.gif

MySQL不就是資料庫server嗎? 那Client指的難道是要連線到資料庫Server的應用程式?

方法2:

執行MySQL Command Line Client程式,然後輸入root跟密碼後,進入mysql> 然後輸入 mysqld --max_allowed_packet=16M,結果出現錯誤訊息: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqld --max_allowed_packet=16M' at line 1

最後,我只好用MySQLAdministrator工具,透過IDE介面去修改max_allowed_packet變數才成功.

請大家幫忙解答關於方法1與2的問題,要如何下命令才可以呢? 謝謝

圖片參考:http://l.yimg.com/f/i/tw/ugc/rte/smiley_1.gif

Update:

謝謝Jason的解答 ;)

而因為這句話As of MySQL 5.0.84, the session value of variable is read only. Before 5.0.84, setting the session value is allowed but has no effect.既然是READ-Only 那到底要怎麼用下指令的方式來修改呢? 在Online Manual: http://dev.mysql.com/doc/refman/5.1/en/packet-too-... 還有教導修改方法. 這不是很奇怪嗎?

1 Answer

Rating
  • 1 decade ago
    Favorite Answer

    我用來測試的是 5.1.34. Server當然是指 MySQL 端, Client 應該就是指連進該 server 的 "遠端" process, 該變數就是 session 內的變數. (向該Server發出查詢等命令的那一端, 包含你下命令的 mysql 那個 console 也都是 client)

    1. 開啟 console 時, 請按右鍵, 選用系統管理員身分來執行該命令列視窗才會有回應.(此時你有可能會遇到其他錯誤. 有可能與 MySQL bug 有關, 因為線索中斷, 就不繼續研究下去了.)

    2. 只是語法用錯, 用 mysql 的話, 命令為:

    mysql> set @max_allowed_packet=16*1024*1024 (此處不接受 16M, 1G 等方式, 不想自己乘出總數, 就可用上述方式)

    #2 執行結果為: Query OK, 0 rows affected (0.01 sec)

    沒錯誤, 但看起來好像怪怪的.

    用 show variables; 查, 發現 max_allowed_packet 值根本沒被改變.

    根據 Online Manual:

    http://dev.mysql.com/doc/refman/5.0/en/server-syst...

    最後一句, As of MySQL 5.0.84, the session value of variable is read only. Before 5.0.84, setting the session value is allowed but has no effect.

    所以.... 看起來你用你的方法有更改到就好, 我想這樣被限制住, 應該也都是安全性的考量吧.

Still have questions? Get your answers by asking now.