I'm developing a job in which I transfer data from some tables to some others. Sometimes fields from the input are null and then Talend calls the method oracle.jdbc.driver.setNull
. At one moment I got an Oracle error that isn't caught by Talend. The error is : ORA-01401 value inserted too big for the column
. But at this moment Talend is trying to insert a Null value in a field which accept it.
I don't understand why I have the error and why Talend didn't catch it.
Here is the exception:
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)
Here is a screenshot of the job:
I finally solved my problem. The stacktrace was not indicating the good line number.
Using the reject link, I saw the problem wasn't on the line the stacktrace showed.
There was effectively a field that was too short for the amount of data I wanted to insert into it, but not the one the stacktrace showed. I don't know why the error says line 11910.
To figure it out, I used the reject link and then I checked every field by hand to figure out where the error was.