You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sqoop.apache.org by "Cheolsoo Park (JIRA)" <ji...@apache.org> on 2013/01/31 00:13:14 UTC

[jira] [Commented] (SQOOP-843) Sqoop2: Generic JDBC connector is committing transaction on export with autoCommit on

    [ https://issues.apache.org/jira/browse/SQOOP-843?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13567050#comment-13567050 ] 

Cheolsoo Park commented on SQOOP-843:
-------------------------------------

+1.
                
> Sqoop2: Generic JDBC connector is committing transaction on export with autoCommit on
> -------------------------------------------------------------------------------------
>
>                 Key: SQOOP-843
>                 URL: https://issues.apache.org/jira/browse/SQOOP-843
>             Project: Sqoop
>          Issue Type: Bug
>    Affects Versions: 1.99.1
>            Reporter: Jarek Jarcec Cecho
>            Assignee: Jarek Jarcec Cecho
>             Fix For: 1.99.2
>
>         Attachments: bugSQOOP-843.patch
>
>
> I've noticed that Generic JDBC Connector is not explicitly setting autoCommit and yet is committing transactions. This might lead to issues with for example MySQL JDBC driver that sets the autoCommit to true by default and calling commit will result in following exception being thrown:
> {code}
> 2013-01-23 09:05:02,316 ERROR org.apache.sqoop.job.mr.SqoopOutputFormatLoadExecutor: Error while loading data out of MR job.
> org.apache.sqoop.common.SqoopException: GENERIC_JDBC_CONNECTOR_0002:Unable to execute the SQL statement
> 	at org.apache.sqoop.connector.jdbc.GenericJdbcExecutor.executeBatch(GenericJdbcExecutor.java:106)
> 	at org.apache.sqoop.connector.jdbc.GenericJdbcExportLoader.load(GenericJdbcExportLoader.java:66)
> 	at org.apache.sqoop.connector.jdbc.GenericJdbcExportLoader.load(GenericJdbcExportLoader.java:26)
> 	at org.apache.sqoop.job.mr.SqoopOutputFormatLoadExecutor$ConsumerThread.run(SqoopOutputFormatLoadExecutor.java:212)
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:662)
> Caused by: java.sql.SQLException: Can't call commit when autocommit=true
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:923)
> 	at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1683)
> 	at org.apache.sqoop.connector.jdbc.GenericJdbcExecutor.executeBatch(GenericJdbcExecutor.java:103)
> 	... 9 more
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira