1. 程式人生 > >MySQL資料移植到Oracle中碰到的異常總結一

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不會自我查詢主鍵,然後找到沒有被佔用的數字使用麼?不應該啊...)

相關推薦

MySQL資料移植Oracle碰到的異常總結

         終於將mysql中的表與資料移植到了oracle中,於是修改後hbm.xml後,進行了逐個的單元測試(經驗:測試查詢所有session.createQuery().list()會將大部分問題暴露出來!!測試新增可以試驗主鍵生成策略是否可行!因新增太過麻煩,

OracleRAISE異常

信息 true back 文本 acl 一個 處理 發生 處理異常 由三種方式拋出異常    1. 通過PL/SQL運行時引擎    2. 使用RAISE語句    3. 調用RAISE_APPLICATION_ERROR存儲過程    當數據庫或PL/SQL在運行時發生錯

JAVA各種異常總結

1.java.lang.nullpointerexception這個異常大家肯定都經常遇到,異常的解釋是"程式遇上了空指標",簡單地說就是呼叫了未經初始化的物件或者是不存在的物件,這個錯誤經常出現在建立圖片,呼叫陣列這些操作中,比如圖片未經初始化,或者圖片建立時的路徑錯誤等等。對陣列操作中出現空

利用sqoop將hive資料匯入Oracle(踩的坑)

教程很多,這裡只說踩過的坑 1.下載sqoop時,還得下一個bin的包,拿到sqoop-1.4.6.jar 的包,放到hadoop的lib目錄下 2.匯入oracle,執行程式碼時,使用者名稱和表名必須大寫!且資料庫建表時表名必須大寫!  示例程式碼: sqoop expo

轉:ORACLE ROWNUM用法總結!

oracle 分頁查詢語句:select * from (select u.*,rownum r from (select * from userifno) u where rownum<大值) where r>小值 問題: ①為什麼一定要用  u.*?    原因:Or

資料在記憶體的儲存總結

資料型別介紹: 基本內建型別分別為: char //字元資料型別 short //短整型 int //整形 long //長整型 long long //更長的整形 float //單精度浮點數 double

oracle資料庫總結(七)--ORACLE ROWNUM用法總結! (轉)

來自:http://www.cnblogs.com/chinhr/archive/2007/09/30/911685.html   ORACLE 中ROWNUM用法總結!  對於 Oracle 的 rownum 問題,很多資料都說不支援>,>=,=,betwe

mysql資料匯入mongodb

# 把mysql資料庫中的資料匯入mongodb中 import pymysql import pymongo # 建立mysql的資料庫連線 con = pymysql.connect(host='localhost', port=3306, user='root', password='12345

ORACLE ROWNUM用法總結!

對於 Oracle 的 rownum 問題,很多資料都說不支援>,>=,=,between...and,只能用以上符號(<、<=、!=),並非說用>,& gt;=,=,between..and 時會提示SQL語法錯誤,而是經常是查不出一條

利用sqoop將hive資料匯入Oracle

首先: 如oracle則執行sqoop list-databases --connect jdbc:oracle:thin:@//192.168.27.235:1521/ORCL --username DATACENTER -P 來測試是否能正確連線資料庫  如mysql則執行sq

MySql函式, 實現Oracle的to_data和to_char函式

1. to_date mysql中用法為:str_to_date('2017-05-01 23:59:59','%Y-%m-%d %T') 2. to_char mysql中的用法:  date_format(date,'%Y-%m-%d %T') 正則表示式

ORACLE觸發器實現刪除張表資料同時刪除另相關資料

這是我的第一篇部落格。 有兩張表:BOOK、PGEVIEW,分別有一個名為BOOKID的欄位 想實現的功能:刪除BOOK表中的一行資料時刪除與PAGEVIEW表中BOOKID相等的資料行 實現方法:在BOOK表中建立一個觸發器BOOK_TRG_DELETE,具體實現語句如下

sqoop mysql資料匯入Hive

sqoop import --connect jdbc:mysql://192.168.8.97:3306/db1?charset-utf8  --username root --password 123456 --table pd_info --columns "pid,cid" --fields-term

資料探勘異常檢測

資料探勘中異常檢測 最近在做聚類,是利用出租車上車下車地點資訊聚類商圈和生活區域,在實戰過程中,遇到了很多問題 其一:聚類中心點的確定,我們聚類結果要返回一個經緯度資訊,或者說這是一個商圈的中心地點的一個顯示,最初是想用K-means做個簡單的展示版本,不得不感嘆K-mea

sqoop將Mysql資料匯入Hive

注:筆者用的是sqoop1.4.6版本 一、將Mysql資料匯入Hive中 命令: sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true --con

ORACLE ROWNUM用法總結

對於 Oracle 的 rownum 問題,很多資料都說不支援>,>=,=,between...and,只能用以上符號(<、<=、!=),並非說用>,& gt;=,=,between..and 時會提示SQL語法錯誤,而是經常是查不出一條

[MySQL] MySQL資料移植遷移 + 備份【InnoDB儲存引擎】

儲存引擎:          Myslq目前比較常用的兩個資料庫儲存引擎分別是MyISAM與InnoDB,MyISAM與InnoDB的主要的不同點在於效能和事務控制上。這裡簡單的介紹一下兩者間的區別: MyISAM是MySQL5.5之前版本預設的資料庫儲存引擎。MYISA

java異常

數組 col logs exception 並且 test 但是 blog ring java異常的概念 執行期的錯誤(javac xxx.java) 運行期的錯誤(java xxx) 這裏講的是運行期出現的錯誤 class TestEx { public s

MySQL數據庫的索引()——索引實現原理

物理地址 關鍵字 必須 增加 pic 搜索索引 而是 哈希索引 掃描 今天我們來探討一下數據庫中一個很重要的概念:索引。 MySQL官方對索引的定義為:索引(Index)是幫助MySQL高效獲取數據的數據結構,即索引是一種數據結構。 我們知道,數據庫查詢是數據庫的最主要功能

Oracle常見的Hint()

Oracle中的Hint可以用來調整SQL的執行計劃,提高SQL執行效率。下面分類介紹Oracle資料庫中常見的Hint。這裡描述的是Oracle11g R2中的常見Hint,Oracle資料庫中各個版本中的Hint都不盡相同,所以這裡講述的的Hint可能並不適用於Oracle早期的版本。