淺談網站數據從ORACLE到MYSQL的兼容遷移

  網站整體改版升級,因為想要降低網站運行成本,考慮變更數據庫,由原來的企業級數據庫ORACLE變更為較為小型的MYSQL,數據庫的變更中的一個重要過程就是網站的數據遷移。在數據遷移過程中遇到一些問題並花瞭較長的時間解決,今天就分析總結下網站的後臺數據庫構建中需要註意的問題。

  1、不同數據庫對大小寫區分不同

  在數據庫遷移測試過程中,發現通過網站後臺管理系統增加的文章出現異常情況,會出現報錯信息。通過調取數據庫的文章SiteArticle表的記錄發現新文章對應的記錄條未能正常插入。

  通過代碼測試檢查發現,是由於網頁文件的代碼對於數據庫的操作的表名字大小寫不一致造成的,ORACLE數據庫具有較好的包容度,支持網頁文件關於insert into Sitearticle()代碼對於SiteArticle表的插入新記錄操作;而MYSQL數據庫對大小寫敏感,隻支持insert into SiteArticle()代碼對於SiteArticle表的插入新記錄操作。

  要解決這個問題,隻能仔細查看網頁文件源碼,更改對數據庫操作的所有語句的數據庫名、表名、字段名等的字符大小寫,保持與數據庫中創建名稱的大小寫一致。

  小結:從兼容性角度考慮,在網站建設的時候就規范數據庫操作相關代碼中的大小寫問題,在今後更換數據庫或升級數據庫的過程中,就不必擔心大小寫敏感度問題,也減少許多更改代碼工作量。

  2、不同數據庫的個別數據類型定義不同

  在數據庫變更的測試過程中,發現網站以往的文章詳情頁面的文章發表時間顯示有問題,非正常格式的年月日時:分的樣式。

  經過頁面調取文件代碼、數據庫記錄等內容的檢查後,發現是由於ORACLE中對時間的定義類型隻有Date一種,而這種定義類型的格式包括年月日和時間;而在MYSQL中對時間的定義類型包含Date、Time、Datetime三種,在MYSQL中對於Date類型的定義僅僅包含年月日而不包含時間。

  要解決這個問題,隻能把MYSQL數據庫表中創建的字段類型由原來的Date改為Datetime,再重新進行這類數據的導入。

  小結:不同的數據庫對具體類型定義不同,因此在完成新數據庫表結構構件後,最好進行少量數據記錄條遷移進行數據測試,能夠及時發現問題所在並進行數據類型修改,再進行全部數據的遷移,以免造成數據重復導入,增加工作量。

  3、不同數據庫對保留字的要求不同

  在數據庫遷移過程中,發現在統一瞭大小寫問題後,提交文章時候關鍵字標簽的記錄插入依舊失敗,報錯信息提示為語法錯誤。

  經過排查,發現是保留字在搗鬼。在ORACLE數據庫中對保留字的態度是較為寬容的,可以表名和字段名稱均可以使用保留字;而MYSQL數據庫規定保留字是不可以作為表名和字段名的。在網站的數據庫Sitearticle表中的其中一個字段名為show,屬於保留字,因此同樣建立在MYSQL數據庫後,插入新記錄報語法錯誤。

  解決這個問題,需要在網頁代碼中將代碼語句中的關於Sitearticle表的show字段名用“符號(即1按鍵前面的按鍵輸入的符號)引起來以區別。

  小結:不同數據庫對保留字的要求不同,所以在網站數據庫建設的時候不論當前數據庫類型版本是否支持,盡量不用保留字作為字段名和表名,以保障後期數據庫版本的升級和替換後運行正常。

  綜上所述,以上為網站數據庫變更過程中遇到的問題和解決的技術方法,分享希望對大傢有所幫助,本文由陽光減肥網 原創,轉載的時候請保留作者鏈接,謝謝。