MySQL数据移植到Oracle中碰到的异常总结一

         终于将mysql中的表与数据移植到了oracle中,于是修改后hbm.xml后,进行了逐个的单元测试(经验:测试查询所有session.createQuery().list()会将大部分问题暴露出来!!测试添加可以试验主键生成策略是否可行!因添加太过麻烦,一般测试几个典型即可)。发现了很多问题,特此总结!


1.Caused by: java.sql.SQLException: ORA-01747: user.table.column, table.column 或列说明无效

原因:表中的字段占用了oracle中的关键字!

处理:检查该表对应的oracle中的字段是否占用oracle的关键字,修改后,修改hbm.xml中的

 <property name="level" type="integer">
            <column name="level_" />

即可。


2、Caused by: java.sql.SQLException: 无法转换为内部表示

原因:oracle表中字段的类型与该表在项目中的类型不一致

处理:

1检查你的报错信息,一般查看上图红框位置,它会告诉你大概是什么的类型错误,然后检查数据与hbm.xml和javabean是否一致。

2)因为oracle中不支持boolean类型,所以如果你的javabean中有该类型,则需要根据情况进行更改(oracle中会将boolean类型转为char类型)

3一般情况下最后需要修改

<property name="level" type="integer">

即可!

3、Caused by: java.sql.SQLException: ORA-00904:"INFOCONNEC0_"."RECYCLESHEETNO": 标识符无效


原因:我出错的原因是我的oracle中没有这个字段,而hbm.xml和项目中的表竟然有该字段

处理:根据情况是在数据库中添加字段,或者将hbm.xml中的这几个字段注释掉...

4、Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (NASEXT.PRIMARY_97)

原因:网上的原因很多,我说一下我碰到的吧,因为是从mysql移植数据到oracle,所以oracle中存在了很多数据,当添加的时候,根据oracle序列逐步递增,但因为原始数据的占用,导致该错误...(有点牵强,但现在的现象只能让我这么理解了...)

处理:我自己修改了oracle中序列的起始点(比如已经存在100条数据,那么我的起始点就设置了101或者更高),发现就不会再报这个错误了...但是总觉的有点不对劲(难道oracle不会自我查询主键,然后找到没有被占用的数字使用么?不应该啊...)


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值