網(wǎng)站數(shù)據(jù)從ORACLE遷移到MYSQL教程
  • 更新時(shí)間:2024-11-08 07:26:35
  • 網(wǎng)站建設(shè)
  • 發(fā)布時(shí)間:1年前
  • 210

網(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ò)程中遇到了一些問(wèn)題,花了很長(zhǎng)時(shí)間才解決。今天就對(duì)網(wǎng)站后臺(tái)數(shù)據(jù)庫(kù)建設(shè)中需要注意的問(wèn)題進(jìn)行分析總結(jié)。1、不同數(shù)據(jù)庫(kù)的個(gè)別數(shù)據(jù)類(lèi)型定義不同

改庫(kù)測(cè)試過(guò)程中,發(fā)現(xiàn)網(wǎng)站上一篇文章詳情頁(yè)的文章發(fā)表時(shí)間有問(wèn)題,年月日時(shí):分格式異常。

通過(guò)查看頁(yè)面調(diào)用文件代碼、數(shù)據(jù)庫(kù)記錄等,發(fā)現(xiàn)ORACLE中時(shí)間的定義類(lèi)型只有Date,該定義類(lèi)型的格式包括年、月、日、時(shí)間;而在MYSQL中,時(shí)間的定義類(lèi)型包括Date、Time和Datetime。在MYSQL中,Date類(lèi)型的定義只有年月日,沒(méi)有時(shí)間。

要解決這個(gè)問(wèn)題,只能將MYSQL數(shù)據(jù)庫(kù)表中創(chuàng)建的字段類(lèi)型由原來(lái)的Date改為Datetime,然后重新導(dǎo)入該類(lèi)型的數(shù)據(jù)。

總結(jié):不同的數(shù)據(jù)庫(kù)對(duì)具體的類(lèi)型有不同的定義。因此,在完成新的數(shù)據(jù)庫(kù)表結(jié)構(gòu)組件后,最好遷移少量數(shù)據(jù)記錄進(jìn)行數(shù)據(jù)測(cè)試,以便及時(shí)發(fā)現(xiàn)問(wèn)題和修改數(shù)據(jù)類(lèi)型,然后再遷移所有數(shù)據(jù)。以免造成數(shù)據(jù)重復(fù)導(dǎo)入,增加工作量。2、不同數(shù)據(jù)庫(kù)對(duì)大小寫(xiě)區(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)的記錄條目沒(méi)有正常插入。

通過(guò)代碼測(cè)試檢查,發(fā)現(xiàn)網(wǎng)頁(yè)文件的代碼與數(shù)據(jù)庫(kù)操作的表名大小寫(xiě)不一致。 ORACLE數(shù)據(jù)庫(kù)具有良好的容忍度,支持插入SiteArticle表的網(wǎng)頁(yè)文件的insert into Sitearticle()代碼。記錄操作;而MYSQL數(shù)據(jù)庫(kù)區(qū)分大小寫(xiě),只支持insert into SiteArticle()代碼向SiteArticle表中插入新記錄。

要解決這個(gè)問(wèn)題,只能仔細(xì)查看網(wǎng)頁(yè)文件的源代碼,將所有操作數(shù)據(jù)庫(kù)的語(yǔ)句的數(shù)據(jù)庫(kù)名、表名、字段名等的字符大小寫(xiě)都改掉,并保持與在數(shù)據(jù)庫(kù)中創(chuàng)建的名稱(chēng)的大小寫(xiě)。

總結(jié):從兼容性的角度來(lái)看,在建站的時(shí)候,要規(guī)范數(shù)據(jù)庫(kù)操作相關(guān)代碼的大小寫(xiě)。在以后更換或升級(jí)數(shù)據(jù)庫(kù)的過(guò)程中,無(wú)需擔(dān)心區(qū)分大小寫(xiě)的問(wèn)題,可以減少很多代碼改動(dòng)。工作量。3、不同數(shù)據(jù)庫(kù)對(duì)保留字的要求不同

數(shù)據(jù)庫(kù)遷移過(guò)程中,發(fā)現(xiàn)統(tǒng)一大小寫(xiě)問(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,這是一個(gè)保留字。所以MYSQL數(shù)據(jù)庫(kù)也創(chuàng)建好后,插入新記錄時(shí)會(huì)報(bào)語(yǔ)法錯(cuò)誤。

為了解決這個(gè)問(wèn)題,需要在網(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ù)類(lèi)型版本是否支持,在建站數(shù)據(jù)庫(kù)時(shí)盡量不要使用保留字作為字段名和表名,以保證后續(xù)數(shù)據(jù)庫(kù)版本升級(jí)更換后的正常運(yùn)行。

本文發(fā)表于北京網(wǎng)站制作公司推來(lái)客http://www.tlkjt.com/

我們專(zhuān)注高端建站,小程序開(kāi)發(fā)、軟件系統(tǒng)定制開(kāi)發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開(kāi)發(fā)、各類(lèi)API接口對(duì)接開(kāi)發(fā)等。十余年開(kāi)發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿(mǎn)意為止,多一次對(duì)比,一定讓您多一份收獲!

本文章出于推來(lái)客官網(wǎng),轉(zhuǎn)載請(qǐng)表明原文地址:https://www.tlkjt.com/web/13240.html
推薦文章

在線客服

掃碼聯(lián)系客服

3985758

回到頂部