关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » MySQL »那些Oracle移植到MySQL值得我们注意的事项

    那些Oracle移植到MySQL值得我们注意的事项

    2011-10-09 10:43:00 出处:ITJS
    分享

    此文主要向大家描述的是把Oracle移植到MySQL数据库的实际操作过程中值得我们大家注意的事项,如果你对其实际操作有兴趣了解的话,你就可以通过以下的文章对其有更深入的了解。

    客户用的数据库是MySQL(和PHP搭配之最佳组合),而研发好的产品支持Oracle(大型网站数据库平台),为了让客户掏腰包,我们必须把数据库环境从Oracle(大型网站数据库平台)转向MySQL数据库。我们在转换的过程中碰到了下面一些问题,希望能给同样遭遇的同仁们一些借鉴。

    如果我们在最初的设计、编码过程中注意数据库的移植性,这种情况下可以完全不需要作额外工作。

    一、数据库环境从Oracle(大型网站数据库平台)转向MySQL(和PHP搭配之最佳组合)碰到的问题。

    因为逻辑不变,所以原则是不改应用程序代码,只改数据库表的创建/初始化sql。下面是我们碰到的问题以及解决办法。

    1、 大小写敏感的区别(如果服务器OS是linux)。

    在Oracle(大型网站数据库平台)中一般情况下不区分大小写。有时候我们在使用Oracle(大型网站数据库平台)不注意大小写的问题,表名和字段名不加双引号是不区分大小写的,像这样:insert into tableName 和 insert into TABLENAME效果是一样的,用工具导出创建/数据初始化脚本,得到的结果一般表名和字段名转化成了大写。

    但在MySQL(和PHP搭配之最佳组合)中,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。数据库对应数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,使用数据库或表实际上是操纵这些文件(夹),所以使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。在以linux为内核的操作系统中是大小写敏感的。

    解决的办法是把MySQL数据库名和Oracle(大型网站数据库平台)的大小写保持一致,表名与应用程序中sql字符串中的表名保持一致,如果应用程序中字段名用了双引号,那请把sql中的字段名大小写与双引号里的字符保持一致。如果你的应用程序所引用的表名、字段没有统一大小写,那麻烦就大了。

    2、保留字的区别。

    像sql语言的函数名(如:inteval,show)等是保留字。Oracle(大型网站数据库平台)中保留字是可以作为表名和字段名,并且不影响使用,但MySQL(和PHP搭配之最佳组合)中保留字是不能作为表名和字段名,如果使用会报语法错误。

    解决办法,把sql语句中的保留字用‘`’符号引起来,这个符号位于键盘的tab键上面;如果是字段名还有另外一种方法tablename.字段名。像这样:insert into tablename (id, `interval`) value(….. 或insert into tablename (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字节,如果超过会报这样的错:ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes。如果是UTF-8编码,相当于333个字符的长度(因为UTF8一个字符占3个字节)。Oracle(大型网站数据库平台)的索引长度限制比MySQL数据库要宽松得多。

    解决的办法就不必要多说了,要么改索引的定义,要么改字段的定义长度。

    二、为了数据库的兼容性我们应该注意些什么。

    数据库的兼容性应该是数据库设计应该重视的一个问题,因为有时候客户存在已经在用的数据库,并且不希望同时维护两个数据库,这样的话兼容多种数据库还能成为产品的一个卖点。

    作到数据库的兼容性关键是遵守标准用法。

    1、 遵守标准用法,尽量不使用某种数据库特有的用法。

    如msyql的‘`’符号的用法,再比如,很多人有这种用法,在使用Oracle(大型网站数据库平台)开发的时候创建sequence,往表中插数据之前先SELECT seq.nextval FROM DUAL;,然后把查询得到的值作为value插入表中,这种用法没法适应没有sequence的数据库,每个数据库都有自动增长型的用法,如果需要使用就应该完全地使用。

    再举个例子,不同的数据库对分页查询作了扩展,postgresql有offset,limit,Oracle(大型网站数据库平台)就没有。

    2、 避免数据库大小写敏感的问题。

    选择数据库表名和字段名采用大写还是小写,并且在数据库的设计和编码过程中完全统一。

    3、 保留字。

    要求数据库设计者尽量不使用保留字作表名和字段名。也有很多人有这种用法,在表名和字段名前加‘_’,像这样:create table _tablename ( _id integer)。这样永远不会出现保留字引起的问题。

    上面说了这么多内容,是关于对Oracle移植到MySQL数据库注意事项的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注ITJS,学习最新Mysql技术。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    Cornell大神Kleinberg的经典教材《算法设计》是最好入门的算法教材

    从 Microsoft 下载中心安装 Windows 7 SP1 和 Windows Server 2008 R2 SP1 之前要执行的步骤

    Llama 2基于UCloud UK8S的创新应用

    火山引擎DataTester:如何使用A/B测试优化全域营销效果

    腾讯云、移动云继阿里云降价后宣布大幅度降价

    字节跳动数据平台论文被ICDE2023国际顶会收录,将通过火山引擎开放相关成果

    这个话题被围观超10000次,火山引擎VeDI如此解答

    误删库怎么办?火山引擎DataLeap“3招”守护数据安全

    IT头条

    平替CUDA!摩尔线程发布MUSA 4性能分析工具

    00:43

    三起案件揭开侵犯个人信息犯罪的黑灰产业链

    13:59

    百度三年开放2.1万实习岗,全力培育AI领域未来领袖

    00:36

    工信部:一季度,电信业务总量同比增长7.7%,业务收入累计完成4469亿元

    23:42

    Gartner:2024年全球半导体营收6559亿美元,AI助力英伟达首登榜首

    18:04

    技术热点

    iOS 8 中如何集成 Touch ID 功能

    windows7系统中鼠标滑轮键(中键)的快捷应用

    MySQL数据库的23个特别注意的安全事项

    Kruskal 最小生成树算法

    Ubuntu 14.10上安装新的字体图文教程

    Ubuntu14更新后无法进入系统卡在光标界面解怎么办?

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。