ITPub博客

首页 > 数据库 > Oracle > oracle数据库环境转移到mysql数据库坏境的问题

oracle数据库环境转移到mysql数据库坏境的问题

Oracle 作者:tzqq001 时间:2014-02-18 16:27:17 0 删除 编辑
    下文主要描述的是把oracle数据库环境转移到mysql数据库坏境中需要大家注意事项和一些解决办法,我们都知道客

户在用的相关数据库一般都是mysql,而技术人员研发出好的产品一般支持Oracle,为了客户的利益,我们必须把数据

库环境从Oracle转向mysql。技术人员在转换的过程中碰到了下面一些问题,希望能给同样遭遇的朋友们一些帮助。


1.服务器大小写敏感的区别

在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.数据类型的区别。

在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要宽松得多。

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



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



本文地址转自广深互联:http://www.99idc.cn/style/info/shownews.asp?id=789

喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21237893/viewspace-1117075/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-03-28