網(wǎng)站(www.tlkjt.com)整體改版升級(jí)。因?yàn)橄M档途W(wǎng)站的運(yùn)營(yíng)成本,所以考慮換數(shù)據(jù)庫(kù),從原來(lái)的企業(yè)級(jí)數(shù)據(jù)庫(kù)ORACLE換成比較小的MYSQL。數(shù)據(jù)庫(kù)變更中的一個(gè)重要過(guò)程是網(wǎng)站數(shù)據(jù)遷移。我在數(shù)據(jù)遷移過(guò)程中遇到了一些問題,花了很長(zhǎng)時(shí)間才解決。今天就對(duì)網(wǎng)站后臺(tái)數(shù)據(jù)庫(kù)建設(shè)中需要注意的問題進(jìn)行分析總結(jié)。1、不同數(shù)據(jù)庫(kù)的個(gè)別數(shù)據(jù)類型定義不同
改庫(kù)測(cè)試過(guò)程中,發(fā)現(xiàn)網(wǎng)站上一篇文章詳情頁(yè)的文章發(fā)表時(shí)間有問題,年月日時(shí):分格式異常。
通過(guò)查看頁(yè)面調(diào)用文件代碼、數(shù)據(jù)庫(kù)記錄等,發(fā)現(xiàn)ORACLE中時(shí)間的定義類型只有Date,該定義類型的格式包括年、月、日、時(shí)間;而在MYSQL中,時(shí)間的定義類型包括Date、Time和Datetime。在MYSQL中,Date類型的定義只有年月日,沒有時(shí)間。
要解決這個(gè)問題,只能將MYSQL數(shù)據(jù)庫(kù)表中創(chuàng)建的字段類型由原來(lái)的Date改為Datetime,然后重新導(dǎo)入該類型的數(shù)據(jù)。
總結(jié):不同的數(shù)據(jù)庫(kù)對(duì)具體的類型有不同的定義。因此,在完成新的數(shù)據(jù)庫(kù)表結(jié)構(gòu)組件后,最好遷移少量數(shù)據(jù)記錄進(jìn)行數(shù)據(jù)測(cè)試,以便及時(shí)發(fā)現(xiàn)問題和修改數(shù)據(jù)類型,然后再遷移所有數(shù)據(jù)。以免造成數(shù)據(jù)重復(fù)導(dǎo)入,增加工作量。2、不同數(shù)據(jù)庫(kù)對(duì)大小寫區(qū)分不同
數(shù)據(jù)庫(kù)遷移測(cè)試時(shí),發(fā)現(xiàn)通過(guò)網(wǎng)站后臺(tái)管理系統(tǒng)添加的文章不正常,會(huì)出現(xiàn)錯(cuò)誤信息。通過(guò)調(diào)用數(shù)據(jù)庫(kù)的文章SiteArticle表的記錄,發(fā)現(xiàn)新文章對(duì)應(yīng)的記錄條目沒有正常插入。
通過(guò)代碼測(cè)試檢查,發(fā)現(xiàn)網(wǎng)頁(yè)文件的代碼與數(shù)據(jù)庫(kù)操作的表名大小寫不一致。 ORACLE數(shù)據(jù)庫(kù)具有良好的容忍度,支持插入SiteArticle表的網(wǎng)頁(yè)文件的insert into Sitearticle()代碼。記錄操作;而MYSQL數(shù)據(jù)庫(kù)區(qū)分大小寫,只支持insert into SiteArticle()代碼向SiteArticle表中插入新記錄。
要解決這個(gè)問題,只能仔細(xì)查看網(wǎng)頁(yè)文件的源代碼,將所有操作數(shù)據(jù)庫(kù)的語(yǔ)句的數(shù)據(jù)庫(kù)名、表名、字段名等的字符大小寫都改掉,并保持與在數(shù)據(jù)庫(kù)中創(chuàng)建的名稱的大小寫。
總結(jié):從兼容性的角度來(lái)看,在建站的時(shí)候,要規(guī)范數(shù)據(jù)庫(kù)操作相關(guān)代碼的大小寫。在以后更換或升級(jí)數(shù)據(jù)庫(kù)的過(guò)程中,無(wú)需擔(dān)心區(qū)分大小寫的問題,可以減少很多代碼改動(dòng)。工作量。3、不同數(shù)據(jù)庫(kù)對(duì)保留字的要求不同
數(shù)據(jù)庫(kù)遷移過(guò)程中,發(fā)現(xiàn)統(tǒng)一大小寫問題后,文章提交時(shí)關(guān)鍵字標(biāo)簽的記錄插入仍然失敗,報(bào)錯(cuò)提示是語(yǔ)法錯(cuò)誤。
經(jīng)過(guò)排查,發(fā)現(xiàn)是保留字在?;ㄕ?。 ORACLE數(shù)據(jù)庫(kù)對(duì)保留字的態(tài)度比較寬容,表名和字段名都可以使用保留字;而MYSQL數(shù)據(jù)庫(kù)規(guī)定,保留字不能作為表名和字段名。網(wǎng)站數(shù)據(jù)庫(kù)Sitearticle 表中的一個(gè)字段名為show,這是一個(gè)保留字。所以MYSQL數(shù)據(jù)庫(kù)也創(chuàng)建好后,插入新記錄時(shí)會(huì)報(bào)語(yǔ)法錯(cuò)誤。
為了解決這個(gè)問題,需要在網(wǎng)頁(yè)代碼中用``符號(hào)(即1鍵前面的鍵輸入的符號(hào))將代碼語(yǔ)句中Sitearticle表的show字段名括起來(lái),以區(qū)分它。
總結(jié):不同的數(shù)據(jù)庫(kù)對(duì)保留字的要求不同。因此,無(wú)論當(dāng)前數(shù)據(jù)庫(kù)類型版本是否支持,在建站數(shù)據(jù)庫(kù)時(shí)盡量不要使用保留字作為字段名和表名,以保證后續(xù)數(shù)據(jù)庫(kù)版本升級(jí)更換后的正常運(yùn)行。
本文發(fā)表于北京網(wǎng)站制作公司推來(lái)客http://www.tlkjt.com/
我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開發(fā)、各類API接口對(duì)接開發(fā)等。十余年開發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿意為止,多一次對(duì)比,一定讓您多一份收獲!