筆者在備份Moodle課程時(shí),發(fā)現(xiàn)有些課程能正常備份,有些課程不能夠正常備份,不能正常備份時(shí)出現(xiàn)“寫(xiě)入數(shù)據(jù)庫(kù)時(shí)發(fā)生錯(cuò)誤”的提示。
1.為了讓課程備份出現(xiàn)錯(cuò)誤提示時(shí),顯示更詳細(xì)的提示信息,以方便查找問(wèn)題原因,我用下面的方法打開(kāi)Moodle調(diào)試開(kāi)關(guān)并顯示調(diào)試信息:網(wǎng)站管理→開(kāi)發(fā)→調(diào)試,將調(diào)試信息設(shè)置為“標(biāo)準(zhǔn):顯示錯(cuò)誤、警告和注意”,將顯示調(diào)試信息設(shè)置為“是”(如圖1所示)。
注意,在問(wèn)題修復(fù)處理好后,將“顯示調(diào)試信息”關(guān)閉。
修改調(diào)試信息顯示設(shè)置后,對(duì)不能正常備份的課程進(jìn)行備份,頁(yè)面最下面出現(xiàn)如下調(diào)試信息提示:
圖1 將顯示調(diào)試信息設(shè)置為“是”
圖2 修改max_allowed_packet值
根據(jù)提示,說(shuō)明在發(fā)送查詢(xún)數(shù)據(jù)包(QUERY packet)時(shí)出錯(cuò)。
2.在備份時(shí),有些能夠正常備份,有些不能夠正常備份,而且課程中內(nèi)容較多的課程備份出現(xiàn)問(wèn)題,問(wèn)題應(yīng)該與查詢(xún)QUERY
packet的大小有關(guān)。
本案例安裝的是MariaDB數(shù)據(jù)庫(kù),與MySQL完全兼容,可修改/usr/local/etc/my.cnf配置,將“max_allowed_packet”的值修改為100M,數(shù)據(jù)庫(kù)系統(tǒng)默認(rèn)的max_allowed_packet值為 1M,如果修改為100M后仍然出現(xiàn)“寫(xiě)入數(shù)據(jù)庫(kù)時(shí)出錯(cuò)”的提示,可試著加大“max_allowed_packet”的值,直到能正常備份時(shí)為止。
本案例中,我們用命令“nano /usr/local/etc/my.cnf”來(lái)將原來(lái)“max_allowed_packet=1M” 改成“max_allowed_packet=100M”(如圖2)。
3.修改max_allowed_packet數(shù)值后,用命令“service mysqlserver restart”重啟數(shù)據(jù)庫(kù),原來(lái)不能正常備份的課程也能正常進(jìn)行備份,至此問(wèn)題已得到解決。
將“網(wǎng)站管理→開(kāi)發(fā)→調(diào)試→顯示調(diào)試信息”關(guān)閉,調(diào)試信息也設(shè)置為:“無(wú):不顯示任何錯(cuò)誤或警告”,以?xún)?yōu)化Moodle的訪(fǎng)問(wèn)速度。
本Moodle系統(tǒng)的環(huán)境是FreeBSD+Nginx+MariaDB+PHP,在安裝MariaDB數(shù)據(jù)庫(kù)時(shí),沒(méi)有修改數(shù)據(jù)庫(kù)配置文件my.cnf中max_allowed_packet的大小,當(dāng)課程內(nèi)容較大時(shí),備份數(shù)據(jù)庫(kù)的容量超過(guò)max_allowed_pachet的 默認(rèn)值1M,在備份課程時(shí)便出現(xiàn)“寫(xiě)入數(shù)據(jù)庫(kù)時(shí)發(fā)生錯(cuò)誤”的提示。只要修改max_allowed_pachet的值,使其超過(guò)課程備份時(shí)產(chǎn)生的最大備份數(shù)據(jù)庫(kù)大小,即可解決問(wèn)題。