久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Oracle移植到MySQL需要注意哪些問題

137次閱讀
沒有評論

共計 2509 個字符,預計需要花費 7 分鐘才能閱讀完成。

這篇文章主要介紹“Oracle 移植到 MySQL 需要注意哪些問題”,在日常操作中,相信很多人在 Oracle 移植到 MySQL 需要注意哪些問題問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Oracle 移植到 MySQL 需要注意哪些問題”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

客戶用的數據庫是 MySQL(和 PHP 搭配之最佳組合),而研發好的產品支持 Oracle(大型網站數據庫平臺),為了讓客戶掏腰包,我們必須把數據庫環境從 Oracle(大型網站數據庫平臺)轉向 MySQL 數據庫。

Oracle 移植到 MySQL 需要注意什么

一、數據庫環境從 Oracle(大型網站數據庫平臺)轉向 MySQL(和 PHP 搭配之最佳組合)碰到的問題。

因為邏輯不變,所以原則是不改應用程序代碼,只改數據庫表的創建 / 初始化 sql。下面是我們碰到的問題以及解決辦法。

1、大小寫敏感的區別(如果服務器 OS 是 linux)。

在 Oracle(大型網站數據庫平臺)中一般情況下不區分大小寫。有時候我們在使用 Oracle(大型網站數據庫平臺)不注意大小寫的問題,表名和字段名不加雙引號是不區分大小寫的,像這樣:insertintotableName 和 insertintoTABLENAME 效果是一樣的,用工具導出創建 / 數據初始化腳本,得到的結果一般表名和字段名轉化成了大寫。

但在 MySQL(和 PHP 搭配之最佳組合)中,所使用操作系統的大小寫敏感性決定了數據庫名和表名的大小寫敏感性。數據庫對應數據目錄中的目錄,數據庫中的每個表至少對應數據庫目錄中的一個文件(也可能是多個,取決于存儲引擎)。因此,使用數據庫或表實際上是操縱這些文件(夾),所以使用操作系統的大小寫敏感性決定了數據庫名和表名的大小寫敏感性。在以 linux 為內核的操作系統中是大小寫敏感的。

解決的辦法是把 MySQL 數據庫名和 Oracle(大型網站數據庫平臺)的大小寫保持一致,表名與應用程序中 sql 字符串中的表名保持一致,如果應用程序中字段名用了雙引號,那請把 sql 中的字段名大小寫與雙引號里的字符保持一致。如果你的應用程序所引用的表名、字段沒有統一大小寫,那麻煩就大了。

2、保留字的區別。

像 sql 語言的函數名 (如:inteval,show) 等是保留字。Oracle(大型網站數據庫平臺)中保留字是可以作為表名和字段名,并且不影響使用,但 MySQL(和 PHP 搭配之最佳組合)中保留字是不能作為表名和字段名,如果使用會報語法錯誤。

解決辦法,把 sql 語句中的保留字用‘`’符號引起來,這個符號位于鍵盤的 tab 鍵上面; 如果是字段名還有另外一種方法 tablename. 字段名。像這樣:insertintotablename(id,`interval`)value(….. 或 insertintotablename(id,tablename.inteval)value(…..。

3、數據類型的區別。

在 MySQL(和 PHP 搭配之最佳組合)中沒有像 Oracle(大型網站數據庫平臺)中的 varchar2、number,MySQL(和 PHP 搭配之最佳組合)有與之對應的 varchar、numeric,當然在 Oracle(大型網站數據庫平臺)中沒有 MySQL(和 PHP 搭配之最佳組合)的 time 類型。

解決辦法是替換。

4、自動增長類型的區別。

Oracle(大型網站數據庫平臺)有 sequence,MySQL(和 PHP 搭配之最佳組合)中沒有,但有 auto_increment 屬性。

解決辦法是把 Oracle(大型網站數據庫平臺)中 sequence 轉換成使用 auto_increment 屬性,某些情況可能還有一種辦法可以解決問題,新建一個獨立的表用來專門記錄自動增長型的數據。

5、索引長度限制的區別。

從 MySQL(和 PHP 搭配之最佳組合)4.1.2 開始,MyISAM 和 InnoDB 表索引長度支持 1000 字節,也就是說索引字段的長度不能超過 1000 字節,如果超過會報這樣的錯:ERROR1071(42000):Specifiedkeywastoolong;maxkeylengthis1000bytes。如果是 UTF- 8 編碼,相當于 333 個字符的長度 (因為 UTF8 一個字符占 3 個字節)。Oracle(大型網站數據庫平臺) 的索引長度限制比 MySQL 數據庫要寬松得多。

解決的辦法就不必要多說了,要么改索引的定義,要么改字段的定義長度。

二、為了數據庫的兼容性我們應該注意些什么。

數據庫的兼容性應該是數據庫設計應該重視的一個問題,因為有時候客戶存在已經在用的數據庫,并且不希望同時維護兩個數據庫,這樣的話兼容多種數據庫還能成為產品的一個賣點。

作到數據庫的兼容性關鍵是遵守標準用法。

1、遵守標準用法,盡量不使用某種數據庫特有的用法。

如 msyql 的‘`’符號的用法,再比如,很多人有這種用法,在使用 Oracle(大型網站數據庫平臺)開發的時候創建 sequence,往表中插數據之前先 SELECTseq.nextvalFROMDUAL;,然后把查詢得到的值作為 value 插入表中,這種用法沒法適應沒有 sequence 的數據庫,每個數據庫都有自動增長型的用法,如果需要使用就應該完全地使用。

再舉個例子,不同的數據庫對分頁查詢作了擴展,postgresql 有 offset,limit,Oracle(大型網站數據庫平臺)就沒有。

2、避免數據庫大小寫敏感的問題。

選擇數據庫表名和字段名采用大寫還是小寫,并且在數據庫的設計和編碼過程中完全統一。

3、保留字。

要求數據庫設計者盡量不使用保留字作表名和字段名。也有很多人有這種用法,在表名和字段名前加‘_’,像這樣:createtable_tablename(_idinteger)。這樣永遠不會出現保留字引起的問題。

到此,關于“Oracle 移植到 MySQL 需要注意哪些問題”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-17發表,共計2509字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 青龙| 长海县| 余姚市| 五台县| 吴堡县| 盐源县| 镇赉县| 西盟| 沂源县| 宁晋县| 资讯 | 彰化县| 乌海市| 勃利县| 梅州市| 邢台县| 昌都县| 余干县| 城步| 磐安县| 德化县| 达孜县| 珲春市| 松溪县| 镇平县| 汉中市| 榆林市| 慈利县| 延川县| 古蔺县| 成武县| 封开县| 曲阳县| 晴隆县| 共和县| 呼玛县| 湘阴县| 应用必备| 泰州市| 杂多县| 塔城市|