之前寫了一篇:記錄一次PBOOTCMS如何升級為寒總做的二開版本的文章,但是2023年了,再次進(jìn)行老網(wǎng)站的升級,發(fā)現(xiàn)用之前的方法總是不成功了。大概率是因為寒總的新版新增加的字段太多了,所以我們只好換一個思路來進(jìn)行升級。
這次我們主要是采用:Navicat Premium 16 這個軟件進(jìn)行數(shù)據(jù)更新,請自行百度一下。
**步:我們可以將舊網(wǎng)站同步更新到官方的**版本。
第二步:將我們要轉(zhuǎn)換的數(shù)據(jù)庫比如說A數(shù)據(jù)庫,如果是mysql,則不管他,如果是SQLIT的,可以用上面提到的軟件先將其轉(zhuǎn)換成mysql.
第三步:我們新建一個MYSQL數(shù)據(jù)庫為B,導(dǎo)入二開版本中的原始空數(shù)據(jù)庫,這樣就保證了數(shù)據(jù)結(jié)構(gòu)上與二開版本一樣了。
第四步:我們同步B的結(jié)構(gòu)到A的結(jié)構(gòu)中,這樣保證了A的數(shù)據(jù)不變,結(jié)構(gòu)與二開版本差不多。還是會有一些差異,所以我們不能直接用A作為*終數(shù)據(jù)庫使用。需要進(jìn)行下一步。
第五步:直接從A里面復(fù)制數(shù)據(jù)到B里面,比如說:ay_config, ay_content_ext, ay_content_sort, ay_extfield等等,為什么不直接用數(shù)據(jù)同步或者傳輸呢,因為經(jīng)過測試發(fā)現(xiàn)是會出問題的。不信你可以試試,也許你同步數(shù)據(jù)又正常,反正我同步了多次都出錯了,換了這個方法。或者你將其導(dǎo)出SQL,再在B里面運行這個SQL導(dǎo)入,也是一個非常好的方式。
第六步:將購買的(好東西當(dāng)然要收費。)二次開發(fā)版的程序文件中的:apps,core,config三個文件夾覆蓋掉自己的程序包。config中的數(shù)據(jù)庫連接修改成MYSQL數(shù)據(jù)庫。
如果你想用SQLITE,那繼續(xù)使用NAVICAT,新建一個全新的SQLITE數(shù)據(jù)庫。
然后使用數(shù)據(jù)庫傳輸。
**步:先在后臺清空所有的日志,我一開始未清理,導(dǎo)致數(shù)據(jù)傳輸完成后無法正常運行,第二次先清理了之后再轉(zhuǎn)換,就直接成功了。
第二步:選擇數(shù)據(jù)傳輸。這里不要選。然后下一步,完成。
-------------------------------------------------------我是分割線--------------------------------------------------------------------------------------------
在進(jìn)行數(shù)據(jù)轉(zhuǎn)換后,有時候會出現(xiàn)這樣或者那樣的問題,下面我來說一下我遇到的一些問題,給大家作一下參考。
1:比如說今天遇到一個問題是其他的所有數(shù)據(jù)都正常,突然發(fā)現(xiàn)欄目管理打不開,然后報錯:執(zhí)行SQL發(fā)生錯誤!錯誤: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 ') LIMIT 1' at line 1
經(jīng)過測試發(fā)現(xiàn),原來是轉(zhuǎn)換過程中,原來的一些欄目數(shù)據(jù)中的gid缺失,就是沒有數(shù)據(jù),所以需要修改成有數(shù)據(jù)。比如說全部修改成0就可以了。
2 : 假如你在后臺編輯文章的時候,出現(xiàn)類似的錯誤,說明有字段遺漏了。需要手工添加或者同步一下結(jié)構(gòu)。
比如出現(xiàn)如下的錯誤提示,表示缺少:picstitle ,則可以對比默認(rèn)的數(shù)據(jù)庫中然后添加對應(yīng)的字段。
如果嫌太麻煩的話,直接用軟件進(jìn)行數(shù)據(jù)結(jié)構(gòu)同步即可。
3: 數(shù)據(jù)同步之后,依舊會遇到在修改文檔的時候出現(xiàn)如下報錯。
在這里, 可能是任何一個數(shù)據(jù)字段會報這個報,當(dāng)報這個錯的時候,我們只需要id值改為鍵值。