Oracle移植到MySQL需要注意哪些问题

37次阅读
没有评论

共计 2509 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章主要介绍“Oracle 移植到 MySQL 需要注意哪些问题”,在日常操作中,相信很多人在 Oracle 移植到 MySQL 需要注意哪些问题问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle 移植到 MySQL 需要注意哪些问题”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

客户用的数据库是 MySQL(和 PHP 搭配之最佳组合),而研发好的产品支持 Oracle(大型网站数据库平台),为了让客户掏腰包,我们必须把数据库环境从 Oracle(大型网站数据库平台)转向 MySQL 数据库。

Oracle 移植到 MySQL 需要注意什么

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

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

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

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

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

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

2、保留字的区别。

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

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

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

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

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

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

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

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

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

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

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

3、保留字。

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

到此,关于“Oracle 移植到 MySQL 需要注意哪些问题”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-18发表,共计2509字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)