Oracle 转Mysql出现的一些问题 2018/12/3

在将Oracle数据库转换为Mysql时遇到诸多挑战,包括数据库名大小写敏感问题,由于Mysql在LINUX上区分大小写,导致表名需要统一调整。此外,还涉及到存储函数、视图和Hibernate的转换。序列转换是个问题,Mysql没有内置序列,需要通过特定方式实现。函数转换如Oracle的to_char对应Mysql的date_format,nvl对应ifnull。在SQL查询中,子查询需加别名,否则会导致错误。在ORM映射时,特定的字段写法可能导致getter方法错误,需要调整。字符串拼接方式也可能引发问题,例如在Mysql中使用concat替代字符串连接操作。最后,还遇到因Tomcat升级导致的模板错误,可能需要更新相关依赖和配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle 转Mysql出现的一些问题
SSH框架
1.Oracle转Mysql会出现很多问题,比如数据库名大小写问题,我出差去的公司的Mysql是装在LINUX上的,设置的是区分大小写。前人挖坑后人踩,项目中的数据库查询语句中的表名即有驼峰命名,还有全大写,还有全小写,还有即大写有小写,没法所以只要是数据库中出现的表我都在项目中改为大写,花了我两天的时间,所以啊在项目开始最好确定是否大写还是小写,而且加别名也是一个好习惯很有用,这样如果对项目维护的话比较容易。其中还有存储函数转换啊,视图,Hibernate升级等,这些没有过多了解!
2.其中还有序列问题,毕竟mysql没有序列,还是我飞哥配置了注解,用到哪个改哪个
3. 基础的函数转换 Oracle Mysql
to_char date_formate
to_date str_to_date
nvl() ifnull()
基础的框架打好了,部分项目的页面也能够展示,接下来就是修改上面这些导致页面不能够出现的查询错误,这些还是比较快的。Mysql的子查询要加别名,不然会报错的
4.
// SQL sql = SQL.begin().sql(“select o from Position o where o.parentPosition=? and o.parentPosition<>o.positionId”, positionId).end();
// List subPositionList = HibernateTemplateEx.getInstance().findByHQL(sql);
~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SQL sql = SQL.begin().sql(“select o.* from SM_POSITION o where o.PARENT_POSITION_ID=? and o.PARENT_POSITION_ID<>o.POSITION_ID”, positionId).end();
List subPositionList = JdbcTemplateEx.getInstance().find(sql);
注释掉的是执行不了的,会报不能够getter position_id 的错误,因为走了断点,发现positionid是有值的,所以就想到换个写法就是第二种啦!然后成功,不过这种缺陷很大,有的人喜欢对接口进行封装,有可能对映射的别名做一些处理,所以不建议。
第二种,你可以改为字符串拼接的方式,可以试试,不用问号,直接传值
’ "+ positionId + " ’
5.然后今天 报了 java.lang.NullPointerException ,然后可把我一顿好找啊!它是根据拼接的字符串判断从数据库传来的Map集合中Key的value值,他的SQL语句是这样写的 select a||b||c id,…采用的是字符串拼接的方式,但是mysql数据库识别不了可以用concat(a,b,c) id的方式来进行替换
6.然后还有一个错误没有解决,jsp中插入了inc模板,但是应该返回来的属性找不到,就会报错
哎
只要是用到了这个模板的都会出错,现在正在排查中…
对了,taomcat7升为8也有可能出现问题的,模板出错就是tomcat升级的问题,tomcat升级一系列的东西也要升级,引入标签(什么.tld文件)就会有些问题就容易出错.,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值