客戶使用 MySQL,產品支援 Oracle,須將資料庫環境從 Oracle 轉向 MySQL。原則:不改應用程式碼,僅修改建表/初始化 SQL。若初期設計考慮可移植性,可零成本遷移。
Oracle 不分大小寫,工具匯出的建表腳本通常轉大寫。MySQL 於 Linux 下資料庫/表名大小寫敏感(對應目錄/檔案)。
解法:MySQL 資料庫/表名與 Oracle 大小寫保持一致,表名與應用 SQL 字串一致,欄位名若用雙引號則大小寫須與引號內一致。應用程式若無統一大小寫,麻煩極大。
Oracle 允許保留字作表/欄位名;MySQL 禁止,會報語法錯。
解法:SQL 中用反引號 ` 包裹保留字(鍵盤 Tab 上方),或用 tablename.column 完整限定。例:INSERT INTO t (id, `interval`) VALUES(...)。
Oracle VARCHAR2、NUMBER → MySQL VARCHAR、NUMERIC;MySQL TIME Oracle 無對應。
解法:直接替換對應型別。
Oracle 用 SEQUENCE;MySQL 用 AUTO_INCREMENT 屬性。
解法:將 Sequence 改為 Auto_increment;特殊情況可建立獨立序列表記錄自增值。
MySQL 4.1.2+ MyISAM/InnoDB 索引長度上限 1000 bytes(UTF-8 約 333 字元),Oracle 限制較寬鬆。
解法:調整索引定義或縮減欄位長度。
_(如 _tablename、_id)永不衝突。