我正在開發一項工作,在該工作中,我將某些表中的數據傳輸給其他人。有時來自輸入的字段爲空,然後Talend調用方法oracle.jdbc.driver.setNull
。有一次,我得到了Talend沒有發現的Oracle錯誤。錯誤是:ORA-01401 value inserted too big for the column
。但是在這一刻Talend正試圖在接受它的領域中插入一個Null值。Talend BatchUpdateException在使用tOracleOutput時未捕獲
我不明白爲什麼我有錯誤,爲什麼Talend沒有抓住它。
這裏是個例外:
Exception in component tOracleOutput_1
java.sql.BatchUpdateException: ORA-01401: valeur insérée trop grande pour colonne
at oracle.jdbc.dbaccess.DBError.throwBatchUpdateException(DBError.java:459)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:4373)
at oracle.jdbc.driver.OraclePreparedStatement.checkBindTypes(OraclePreparedStatement.java:3650)
at oracle.jdbc.driver.OraclePreparedStatement.setNull(OraclePreparedStatement.java:1435)
at maxmigtransformation.t_dm_all_0_1.T_DM_ALL.tOracleInput_1Process(T_DM_ALL.java:11910)
at maxmigtransformation.t_dm_all_0_1.T_DM_ALL.runJobInTOS(T_DM_ALL.java:30394)
at maxmigtransformation.t_dm_all_0_1.T_DM_ALL.main(T_DM_ALL.java:29916)
這裏是工作的一個截圖:
我不太確定我明白你在這裏問什麼。你是否說過,當試圖插入一個空的列到一個可空的列Oracle拋出'ORA-01401'錯誤?我假設你已經在服務器端跟蹤/登錄的情況下運行了這個工作,看看究竟是什麼導致了這個問題?你是否想讓Talend對這個錯誤做些什麼,然後繼續?默認行爲是退出提交,這就是Talend似乎在做的事情。 – ydaetskcoR
我有兩個問題:我不明白爲什麼有Oracle錯誤,我不明白爲什麼talend沒有發現錯誤。我無法訪問數據庫的日誌。 – Alucard
我想這個錯誤實際上是由它所認爲的:你試圖插入/更新一個太大的字段值。檢查你正在插入/更新的數據以及你插入/更新表中的字段長度。如果您禁用組件的「死於錯誤」複選框,那麼Talend應該捕獲錯誤並繼續進行,但實際上您最好修復目標表或源數據。如果您無權更改目標表,則可以對數據進行子串處理以安全截斷它。 – ydaetskcoR