oracle移植到mysql注意事项

2016-02-19 21:12 0 1 收藏

下面是个简单易学的oracle移植到mysql注意事项教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - 编程语言 】

  客户用的数据库是mysql,而研发好的产品支持oracle,为了让客户掏腰包,我们必须把数据库环境从oracle转向mysql。我们在转换的过程中碰到了下面一些问题,希望能给同样遭遇的同仁们一些借鉴。如果我们在最初的设计、编码过程中注意数据库的移植性,这种情况下可以完全不需要作额外工作。

  一、数据库环境从oracle转向mysql碰到的问题。

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

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

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

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

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

  2、保留字的区别。

  像sql语言的函数名(如:inteval,show)等是保留字。Oracle中保留字是可以作为表名和字段名,并且不影响使用,但mysql中保留字是不能作为表名和字段名,如果使用会报语法错误。

  解决办法,把sql语句中的保留字用‘`’符号引起来,这个符号位于键盘的tab键上面;如果是字段名还有另外一种方法tablename.字段名。像这样:insert into tablename (id, `interval`) value(….. 或insert into tablename (id, tablename.inteval) value(….. 。

  3、数据类型的区别。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  在mysql中没有像oracle中的varchar2、number,mysql有与之对应的varchar、numeric,当然在oracle中没有mysql的time类型。

  解决办法是替换。

  4、自动增长类型的区别。

  Oracle有sequence,mysql中没有,但有auto_increment属性。

  解决办法是把Oracle中sequence转换成使用auto_increment属性,某些情况可能还有一种办法可以解决问题,新建一个独立的表用来专门记录自动增长型的数据。

  5、索引长度限制的区别。

  从MySQL 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、 保留字。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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

来源:https://www.tulaoshi.com/n/20160219/1625522.html

延伸阅读
试管婴儿移植后饮食注意事项 试管婴儿助孕和自然受孕一样,饮食吃饭首先要喜欢吃,然后是健康吃,其次是慢吃吃, 孕妇 需要有讲究吃。在喜欢吃的基础上进行平衡调节,做到有营养助健康,最后上升到讲究的层次,也就达到了吃的最高境界。一般来说,西医不讲究忌口。但不管中医还是西医,吃舒服,吃健康是其共识。至于试管婴儿移植后的饮食无...
标签: 育儿 备孕 怀孕
试管婴儿移植后注意事项 1、卧床休息 试管婴儿移植后静卧48小时,尽量少翻身和起床。如果翻身侧卧,角度必须小于45度。这要根据受精卵自身情况决定,通常受精卵的质量好坏决定了是试管婴儿移植后着床成功的时间,一般为3-4天左右。 2、术后不能洗澡 术后48小时内不能洗澡。怀孕后洗澡以淋浴为宜,不要洗盆浴,以免感染。 3、减...
女性月经和怀孕的4大关系 很多已婚妇女如果没来月经都怀疑自己是 怀孕 tulaoshi.com了。女性多久不来月经就是有可能怀孕了呢?下面给大家讲解女性月经和怀孕的4大关系:   初潮年龄   未准妈妈们,你还记得自己青春期的初潮是在什么时候吗?一般说来,生活水平、遗传、身体营养、健康状...
下载本期杂志代码 见资源 By Brian Noyes 当一种新技术出现的时候,对于公司和开发者来说都是令人激动且有紧迫感的时刻。开发者们想学习新的东西——有意思的东西,能保证使他们的生活更加轻松的东西。他们想处于技术工作的最前沿。管理人员和市场人员也急于了解新技术,以便在市场宣传中做得更好,并且使公司更具有竞争力,通过对新技术的使用...
试管婴儿移植后注意事项 试管 婴儿 移植后要注意适当休息 试管婴儿移植后过度的劳累和过度的安逸tulaoshi.com都不利于 胎儿 孕育 试管婴儿移植后要注意适当休息,当然这里的适当休息,不是绝对的卧床不起。而是在平时生活工作中注意不要太过劳累,绝对卧床休息是不对的。过度的劳累和过度的安逸都不...

经验教程

888

收藏

81
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部