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

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


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

MySQL数据移植到Oracle中碰到的异常总结一_第1张图片

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

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

 
           

即可。


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

MySQL数据移植到Oracle中碰到的异常总结一_第2张图片

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

处理:

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

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

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

type="integer">

即可!

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

MySQL数据移植到Oracle中碰到的异常总结一_第3张图片

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

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

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

MySQL数据移植到Oracle中碰到的异常总结一_第4张图片

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

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


你可能感兴趣的:(数据库)