MySQL是目前使用很廣泛的數(shù)據(jù)庫,在使用過程中,有時我們會遇到一個與 "max_allowed_packet" 相關(guān)的報錯,那如何解決這個問題呢? 看如下經(jīng)驗(yàn)。
為當(dāng)涂等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及當(dāng)涂網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、成都做網(wǎng)站、當(dāng)涂網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
方法/步驟
先看看與這個錯誤相關(guān)的后臺異常 :
Packet for query is too large (1706 1024). You can change this value on the server by setting the max_allowed_packet' variable.
一旦數(shù)據(jù)庫出現(xiàn)這個問題,基本執(zhí)行任何查詢語句,后臺都會報這個錯?。ǔ遣樵兯脭?shù)據(jù)量特別少)!
先登錄數(shù)據(jù)庫,查看 max_allowed_packet 這個參數(shù)值
連接數(shù)據(jù)庫服務(wù)器,登錄 mysql, 執(zhí)行命令 :
show variables like '%max_allowed_packate%'
即可查看這個系統(tǒng)參數(shù)目前的值 ! 我的系統(tǒng),目前顯示只有 1024 字節(jié),確實(shí)太小了!
通過 mysql 命令更改這個值到 100M !
連接數(shù)據(jù)庫服務(wù)器,登錄 mysql, 執(zhí)行命令 :
set global max_allowed_packet = 100*1024*1024
退出后,重新登錄 mysql ,再次查看這個系統(tǒng)項(xiàng)的值, 注意,必須重新登錄mysql,否則這個值還是顯示為原始值(緩存)!
修改后,這個配置項(xiàng)顯示為 100 M !
修改配置文件--Windows
我們剛才的修改是針對運(yùn)行環(huán)境,但如果我們的配置文件不變,則重啟數(shù)據(jù)庫后,這個值又恢復(fù)為原始值了,對于 Windows 下的 MySQL,我們需要修改其配置文件 my.ini , 這個文件在 MySQL 的安裝根目錄下。
注意: MySQL 配置文件分為幾個段 (Section), 包括 [mysql], [mysqld], [mysqldump] 等, 我們需要在 [mysqld] 段下添加配置項(xiàng) :
max_allowed_packet = 100M
修改配置文件--Linux
在 Linux 中,MySQL 對應(yīng)的配置文件是 my.cnf , 我們在Linux終端輸入如下命令 :
mysql --help | grep my.cnf
可以查看 MySQL 所使用的 my.cnf 列表(優(yōu)先級列表,先找到的配置文件生效),MySQL 會逐個目錄尋找這個文件,直到找到為止!
我們逐個目錄找到我們系統(tǒng) MySQL 所使用的 my.cnf 配置文件,找到對應(yīng)的配置項(xiàng),修改為 100M 即可。
SELECT category_Sn,isnull(count,0) FROM category left join (SELECT count(*) as count,category_Sn FROM [article] group by category_Sn) AS [article] on category.[category_Sn]=article.[category_Sn]
一、COUNT()函數(shù)
COUNT()函數(shù)進(jìn)行計數(shù)??衫肅OUNT()函數(shù)確定表中行的數(shù)目或者符合特定條件的行的數(shù)目。
COUNT()有兩種使用方式:
1.使用COUNT(*)對表中行的數(shù)目進(jìn)行計數(shù),不管表列中包含的是空值(NULL)還是非空值。
2.使用COUNT(column)對特定列中具有值的行進(jìn)行計數(shù),忽略NULL值。
例如 SELECT COUNT(*) AS num_test FROM test;
此語句對表test所有行進(jìn)行計數(shù),返回表的總行數(shù),不管行中各列有什么值。
例如 SELECT COUNT(school) FROM test;
此語句只對school列中有值的行進(jìn)行計數(shù),忽略null行。
二、MAX()函數(shù)
MAX()函數(shù)返回指定列中的最大值。MAX()要求指定列名。
例如SELECT MAX(age) FROM test;
此語句返回表test中age的最大值。
注:MAX()函數(shù)忽略值為NULL的行。
mysql SELECT MAX(daily_typing_pages)
- FROM employee_tbl;
參考連接: