首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 移植 MySQL 完整遷移指南:大小寫、保留字、資料型別、自增、索引長度五大陷阱

     編輯:Oracle 資料庫相關知識

遷移背景

客戶使用 MySQL,產品支援 Oracle,須將資料庫環境從 Oracle 轉向 MySQL。原則:不改應用程式碼,僅修改建表/初始化 SQL。若初期設計考慮可移植性,可零成本遷移。

一、遷移過程遇到的五大問題與解法

1. 大小寫敏感度差異(Linux 環境)

Oracle 不分大小寫,工具匯出的建表腳本通常轉大寫。MySQL 於 Linux 下資料庫/表名大小寫敏感(對應目錄/檔案)。
解法:MySQL 資料庫/表名與 Oracle 大小寫保持一致,表名與應用 SQL 字串一致,欄位名若用雙引號則大小寫須與引號內一致。應用程式若無統一大小寫,麻煩極大。

2. 保留字衝突

Oracle 允許保留字作表/欄位名;MySQL 禁止,會報語法錯。
解法:SQL 中用反引號 ` 包裹保留字(鍵盤 Tab 上方),或用 tablename.column 完整限定。例:INSERT INTO t (id, `interval`) VALUES(...)。

3. 資料型別對應

Oracle VARCHAR2、NUMBER → MySQL VARCHAR、NUMERIC;MySQL TIME Oracle 無對應。
解法:直接替換對應型別。

4. 自增欄位機制不同

Oracle 用 SEQUENCE;MySQL 用 AUTO_INCREMENT 屬性。
解法:將 Sequence 改為 Auto_increment;特殊情況可建立獨立序列表記錄自增值。

5. 索引長度限制

MySQL 4.1.2+ MyISAM/InnoDB 索引長度上限 1000 bytes(UTF-8 約 333 字元),Oracle 限制較寬鬆。
解法:調整索引定義或縮減欄位長度。

二、資料庫相容性設計原則

  1. 遵循標準 SQL:避免特有語法(如 MySQL 反引號、Oracle Sequence 先查再插、各家分頁擴展不同)。
  2. 統一大小寫規範:設計與編碼階段全盤統一大小寫。
  3. 避開保留字:命名規範加前綴 _(如 _tablename、_id)永不衝突。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved