成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MySQL Insert數(shù)據(jù)量過(guò)大導(dǎo)致報(bào)錯(cuò) MySQL server has gone away

liaoyg8023 / 3257人閱讀

摘要:直接在上執(zhí)行語(yǔ)句,報(bào)錯(cuò)搜索得知當(dāng)客戶端或服務(wù)器收到大于字節(jié)的信息包時(shí),將發(fā)出信息包過(guò)大錯(cuò)誤,并關(guān)閉連接。對(duì)于某些客戶端,如果通信信息包過(guò)大,在執(zhí)行查詢期間,可能會(huì)遇到丟失與服務(wù)器的連接錯(cuò)誤。

接手了同事的項(xiàng)目,其中有一個(gè)功能是保存郵件模板(包含圖片),同事之前的做法是把圖片進(jìn)行base64編碼然后存在mysql數(shù)據(jù)庫(kù)中(字段類型為mediumtext)
然后保存三張圖片(大概400k)的時(shí)候報(bào)錯(cuò)
MySQL server has gone away

然后查看官方文檔https://dev.mysql.com/doc/ref...

得知可能是以下幾個(gè)原因 
服務(wù)器超時(shí)
服務(wù)器斷開
向服務(wù)器發(fā)送不正確或太大的查詢
INSERT或者 REPLACE是插入大量行

開始以為是服務(wù)器超時(shí)導(dǎo)致的,在網(wǎng)上搜的解決辦法(好吧,先試一下 ,發(fā)現(xiàn)還是不行):

 true
));
?>
Note:
如果想使用持久連接,必須在傳遞給 PDO 構(gòu)造函數(shù)的驅(qū)動(dòng)選項(xiàng)數(shù)組中設(shè)置 PDO::ATTR_PERSISTENT 。如果是在對(duì)象初始化之后用 PDO::setAttribute() 設(shè)置此屬性,則驅(qū)動(dòng)程序?qū)⒉粫?huì)使用持久連接。

直接在Navicat上執(zhí)行sql語(yǔ)句,報(bào)錯(cuò) [Err] 1153 - Got a packet bigger than "max_allowed_packet" bytes
搜索得知:當(dāng)MySQL客戶端或mysqld服務(wù)器收到大于max_allowed_packet字節(jié)的信息包時(shí),將發(fā)出“信息包過(guò)大”錯(cuò)誤,并關(guān)閉連接。對(duì)于某些客戶端,如果通信信息包過(guò)大,在執(zhí)行查詢期間,可能會(huì)遇到“丟失與MySQL服務(wù)器的連接”錯(cuò)誤。
客戶端和服務(wù)器均有自己的max_allowed_packet變量,因此,如你打算處理大的信息包,必須增加客戶端和服務(wù)器上的該變量。一般情況下,服務(wù)器默認(rèn)max-allowed-packet為1MB
這下問(wèn)題精確定位了,就是max_allowed_packet配置的問(wèn)題,

查一下配置 show VARIABLES like "%max_allowed_packet%"; 發(fā)現(xiàn)是1048576(1024*1024),也就是1MB,
但是我的圖片才400K,不應(yīng)該啊,然后網(wǎng)上一查:Base64-encoded 數(shù)據(jù)要比原始數(shù)據(jù)多占用 33% 左右的空間。
還是不確定,直接strlen()返回base64字符串長(zhǎng)度1451334,utf8編碼下英文字符1字符占1字節(jié),所以base64編碼后是1451334B(這個(gè)是我自己的理解),大于1MB

修改max_allowed_packet配置 set global max_allowed_packet = 410241024;

發(fā)現(xiàn)問(wèn)題完美解決

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29182.html

相關(guān)文章

  • 解決PHP腳本 MySQL has gone away錯(cuò)誤

    摘要:當(dāng)使用訪問(wèn)數(shù)據(jù)庫(kù)且腳本需要長(zhǎng)時(shí)間執(zhí)行時(shí),頻繁會(huì)遇見的錯(cuò)誤。分析問(wèn)題產(chǎn)生原因因?yàn)槟_本較長(zhǎng)時(shí)間未與數(shù)據(jù)庫(kù)進(jìn)行通信,導(dǎo)致數(shù)據(jù)庫(kù)連接超時(shí)與服務(wù)器斷開連接導(dǎo)致,這時(shí)使用斷開的數(shù)據(jù)庫(kù)連接操作數(shù)據(jù)庫(kù),就會(huì)產(chǎn)生的錯(cuò)誤提示。 當(dāng)PHP 使用PDO訪問(wèn)數(shù)據(jù)庫(kù)且腳本需要長(zhǎng)時(shí)間執(zhí)行時(shí),頻繁會(huì)遇見’ MySQL server has gone away’的錯(cuò)誤。分析問(wèn)題產(chǎn)生原因:因?yàn)槟_本較長(zhǎng)時(shí)間未與數(shù)據(jù)庫(kù)進(jìn)行通...

    Scliang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<