網(wǎng)站制作(jinyejixie.com)整體改版升級(jí),因?yàn)橄胍档途W(wǎng)站運(yùn)行成本,考慮變更數(shù)據(jù)庫(kù),由原來(lái)的企業(yè)級(jí)數(shù)據(jù)庫(kù)ORACLE變更為較為小型的MYSQL,數(shù)據(jù)庫(kù)的變更中的一個(gè)重要過(guò)程就是網(wǎng)站的數(shù)據(jù)遷移。在數(shù)據(jù)遷移過(guò)程中遇到一些問(wèn)題并花了較長(zhǎng)的時(shí)間解決,今天就分析總結(jié)下網(wǎng)站的后臺(tái)數(shù)據(jù)庫(kù)構(gòu)建中需要注意的問(wèn)題。
1、不同數(shù)據(jù)庫(kù)的個(gè)別數(shù)據(jù)類型定義不同
在數(shù)據(jù)庫(kù)變更的測(cè)試過(guò)程中,發(fā)現(xiàn)網(wǎng)站以往的文章詳情頁(yè)面的文章發(fā)表時(shí)間顯示有問(wèn)題,非正常格式的年—月—日時(shí):分的樣式。
經(jīng)過(guò)頁(yè)面調(diào)取文件代碼、數(shù)據(jù)庫(kù)記錄等內(nèi)容的檢查后,發(fā)現(xiàn)是由于ORACLE中對(duì)時(shí)間的定義類型只有Date一種,而這種定義類型的格式包括年月日和時(shí)間;而在MYSQL中對(duì)時(shí)間的定義類型包含Date、Time、Datetime三種,在MYSQL中對(duì)于Date類型的定義僅僅包含年月日而不包含時(shí)間。
要解決這個(gè)問(wèn)題,只能把MYSQL數(shù)據(jù)庫(kù)表中創(chuàng)建的字段類型由原來(lái)的Date改為Datetime,再重新進(jìn)行這類數(shù)據(jù)的導(dǎo)入。
小結(jié):不同的數(shù)據(jù)庫(kù)對(duì)具體類型定義不同,因此在完成新數(shù)據(jù)庫(kù)表結(jié)構(gòu)構(gòu)件后,好進(jìn)行少量數(shù)據(jù)記錄條遷移進(jìn)行數(shù)據(jù)測(cè)試,能夠及時(shí)發(fā)現(xiàn)問(wèn)題所在并進(jìn)行數(shù)據(jù)類型修改,再進(jìn)行全部數(shù)據(jù)的遷移,以免造成數(shù)據(jù)重復(fù)導(dǎo)入,增加工作量。2、不同數(shù)據(jù)庫(kù)對(duì)大小寫區(qū)分不同
在數(shù)據(jù)庫(kù)遷移測(cè)試過(guò)程中,發(fā)現(xiàn)通過(guò)網(wǎng)站后臺(tái)管理系統(tǒng)增加的文章出現(xiàn)異常情況,會(huì)出現(xiàn)報(bào)錯(cuò)信息。通過(guò)調(diào)取數(shù)據(jù)庫(kù)的文章SiteArticle表的記錄發(fā)現(xiàn)新文章對(duì)應(yīng)的記錄條未能正常插入。
通過(guò)代碼測(cè)試檢查發(fā)現(xiàn),是由于網(wǎng)頁(yè)文件的代碼對(duì)于數(shù)據(jù)庫(kù)的操作的表名字大小寫不一致造成的,ORACLE數(shù)據(jù)庫(kù)具有較好的包容度,支持網(wǎng)頁(yè)文件關(guān)于insert into Sitearticle()代碼對(duì)于SiteArticle表的插入新記錄操作;而MYSQL數(shù)據(jù)庫(kù)對(duì)大小寫敏感,只支持insert into SiteArticle()代碼對(duì)于SiteArticle表的插入新記錄操作。
要解決這個(gè)問(wèn)題,只能仔細(xì)查看網(wǎng)頁(yè)文件源碼,更改對(duì)數(shù)據(jù)庫(kù)操作的所有語(yǔ)句的數(shù)據(jù)庫(kù)名、表名、字段名等的字符大小寫,保持與數(shù)據(jù)庫(kù)中創(chuàng)建名稱的大小寫一致。
小結(jié):從兼容性角度考慮,在網(wǎng)站建設(shè)的時(shí)候就規(guī)范數(shù)據(jù)庫(kù)操作相關(guān)代碼中的大小寫問(wèn)題,在今后更換數(shù)據(jù)庫(kù)或升級(jí)數(shù)據(jù)庫(kù)的過(guò)程中,就不必?fù)?dān)心大小寫敏感度問(wèn)題,也減少許多更改代碼工作量。3、不同數(shù)據(jù)庫(kù)對(duì)保留字的要求不同
在數(shù)據(jù)庫(kù)遷移過(guò)程中,發(fā)現(xiàn)在統(tǒng)一了大小寫問(wèn)題后,提交文章時(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,屬于保留字,因此同樣建立在MYSQL數(shù)據(jù)庫(kù)后,插入新記錄報(bào)語(yǔ)法錯(cuò)誤。
解決這個(gè)問(wèn)題,需要在網(wǎng)頁(yè)代碼中將代碼語(yǔ)句中的關(guān)于Sitearticle表的show字段名用``符號(hào)(即1按鍵前面的按鍵輸入的符號(hào))引起來(lái)以區(qū)別。
小結(jié):不同數(shù)據(jù)庫(kù)對(duì)保留字的要求不同,所以在網(wǎng)站數(shù)據(jù)庫(kù)建設(shè)的時(shí)候不論當(dāng)前數(shù)據(jù)庫(kù)類型版本是否支持,盡量不用保留字作為字段名和表名,以保障后期數(shù)據(jù)庫(kù)版本的升級(jí)和替換后運(yùn)行正常。
文章題目:網(wǎng)站數(shù)據(jù)從ORACLE遷移到MYSQL教程
網(wǎng)站路徑:http://jinyejixie.com/news/227475.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站導(dǎo)航、電子商務(wù)、軟件開發(fā)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)