有時(shí)候定制網(wǎng)站的時(shí)候,給顧客做網(wǎng)站程序,偶爾會(huì)出現(xiàn)還原數(shù)據(jù)后,系統(tǒng)--基本參數(shù)設(shè)置為空。雖然也是知道,數(shù)據(jù)庫(kù)備份出錯(cuò),缺少了
tables_struct字段的數(shù)據(jù)庫(kù)表,但是一直沒(méi)弄明白到底怎么會(huì)出現(xiàn)這種情況。
曾經(jīng)也一度認(rèn)為是因?yàn)楸镜財(cái)?shù)據(jù)庫(kù)破壞了,主要是因?yàn)殡娔X開(kāi)機(jī)關(guān)機(jī)強(qiáng)制了。每次出現(xiàn)這種情況,解決的辦法 就是利用 帝國(guó)數(shù)據(jù)庫(kù)備份,然后還原就沒(méi)有任何的問(wèn)題了。
最近兩天有個(gè)顧客定制的網(wǎng)站又出現(xiàn)了這個(gè)問(wèn)題,仔細(xì)查看了下 一直也是沒(méi)有找到原因。不過(guò)打開(kāi)數(shù)據(jù)庫(kù)文件名 mysql/data 下仔細(xì)看了下,發(fā)現(xiàn)出錯(cuò)的這個(gè)數(shù)據(jù)名稱(chēng)給其他的不一樣,如下圖
劃線(xiàn)的數(shù)據(jù)名稱(chēng)為:1500(個(gè)人有時(shí)候?yàn)榱藚^(qū)分,個(gè)別的用顧客定制的價(jià)錢(qián)為數(shù)據(jù)庫(kù)名稱(chēng)),個(gè)人就反思了,是不是數(shù)據(jù)庫(kù)第一個(gè)字母為數(shù)字引起的呢?
解決辦法也很簡(jiǎn)單,暫停數(shù)據(jù)庫(kù),手動(dòng)修改數(shù)據(jù)名稱(chēng),然后修改織夢(mèng)數(shù)據(jù)庫(kù)連接文件:data/ common.inc.php 修改下數(shù)據(jù)名稱(chēng)。然后再備份和還原就正常了。
自此 我們找到原因并有解決辦法。總結(jié)一下。
原因:安裝和創(chuàng)建程序的時(shí)候,數(shù)據(jù)庫(kù)名稱(chēng)第一個(gè)不能是數(shù)字,要以字母開(kāi)頭。
出現(xiàn)這種問(wèn)題,解決辦法三個(gè):
1 利用第三方數(shù)據(jù)庫(kù)備份軟件或者程序,進(jìn)行數(shù)據(jù)庫(kù)備份和還原數(shù)據(jù)庫(kù) 例如:帝國(guó)數(shù)據(jù)備份
2 備份之前,先修改下數(shù)據(jù)庫(kù)名稱(chēng),并修改默認(rèn)織夢(mèng)數(shù)據(jù)庫(kù)連接文件 data/ common.inc.php 下的數(shù)據(jù)庫(kù)連接名
3 既然是缺少"tables_struct_fb21c977e3dfa6fb.txt" 的文件 其中"fb21c977e3dfa6fb"為隨機(jī)數(shù),我們只需要找一個(gè)剛安裝的或者其他程序的tables_struct開(kāi)頭的文件(前提編碼要一致就可以了)重新名稱(chēng)本程序的這個(gè)文件,覆蓋一下,再還原數(shù)據(jù)庫(kù)就可以了,不過(guò)如果程序里,基本參數(shù)里設(shè)置了自定義的參數(shù),需要重新設(shè)置一下就可以了