我已經(jīng)多次遇到過(guò)這種情況,并且通常發(fā)現(xiàn)答案是 max_allowed_pa??cket
。
將 /etc/my.cnf
(在 [mysqld]
下)中的值提高到 8 或 16M 通??梢孕迯?fù)該問(wèn)題。 (MySql 5.7 中的默認(rèn)值為 4194304
,即 4MB。)
[mysqld] max_allowed_packet=16M
注意:如果該行不存在,只需創(chuàng)建該行,它必須顯示為 [mysqld]
注意:這可以在服務(wù)器運(yùn)行時(shí)進(jìn)行設(shè)置,但在 mysql 守護(hù)進(jìn)程重新啟動(dòng)后它將丟失。使用SET GLOBAL max_allowed_pa??cket=104857600
(這將其設(shè)置為100MB)
注意:在 Windows 上,您可能需要使用 ANSI 而不是 UTF-8 編碼保存 my.ini 或 my.cnf 文件。
檢查連接是否存在并在需要時(shí)重新建立連接可能會(huì)更容易。
有關(guān)信息,請(qǐng)參閱 PHP:mysqli_ping。