[
https://issues.apache.org/jira/browse/SQOOP-1400?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14072733#comment-14072733
]
Richard commented on SQOOP-1400:
--------------------------------
There is the function initOptionDefaults in MySQLManager.java
==========================================================
@Override
protected void initOptionDefaults() {
if (options.getFetchSize() == null) {
LOG.info("Preparing to use a MySQL streaming resultset.");
options.setFetchSize(Integer.MIN_VALUE);
} else if (
!options.getFetchSize().equals(Integer.MIN_VALUE)
&& !options.getFetchSize().equals(0)) {
LOG.info("Argument '--fetch-size " + options.getFetchSize()
+ "' will probably get ignored by MySQL JDBC driver.");
// see also
// http://dev.mysql.com/doc/refman/5.5/en
// /connector-j-reference-implementation-notes.html
}
}
==========================================================
If there is no fetch-size set in command line, the default fetch size will be
set as Integer.MIN_VALUE (0x80000000).
For Statement.java in rt.jar, the default value is 0, and the negative
(Integer.MIN_VALUE) is not satisfied, refer to the comment of setFetchSize.
==========================================================
/**
* Gives the JDBC driver a hint as to the number of rows that should
* be fetched from the database when more rows are needed for
* <code>ResultSet</code> objects genrated by this <code>Statement</code>.
* If the value specified is zero, then the hint is ignored.
* The default value is zero.
*
* @param rows the number of rows to fetch
* @exception SQLException if a database access error occurs,
* this method is called on a closed <code>Statement</code> or the
* condition <code>rows >= 0</code> is not satisfied.
* @since 1.2
* @see #getFetchSize
*/
void setFetchSize(int rows) throws SQLException;
==========================================================
> Failed to import data using mysql-connector-java-5.1.17.jar
> -----------------------------------------------------------
>
> Key: SQOOP-1400
> URL: https://issues.apache.org/jira/browse/SQOOP-1400
> Project: Sqoop
> Issue Type: Bug
> Components: sqoop2-client
> Affects Versions: 1.4.5
> Environment: centos-6.4
> Reporter: Richard
>
> sqoop 1.4.5 + mysql-connector-java-5.1.31.jar, which is the latest version
> (works fine)
> sqoop 1.4.5 + mysql-connector-java-5.1.17.jar, which is the default version
> on centos 6.4 installed by rpm (fails with error message showed below)
> ==========================================================
> 14/07/24 10:44:48 INFO manager.SqlManager: Executing SQL statement: SELECT
> t.* FROM `test1` AS t LIMIT 1
> 14/07/24 10:44:48 ERROR manager.SqlManager: Error reading from database:
> java.sql.SQLException: Streaming result set
> com.mysql.jdbc.RowDataDynamic@1cfabc3a is still active. No statements may be
> issued when any streaming result sets are open and in use on a given
> connection. Ensure that you have called .close() on any active streaming
> result sets before attempting more queries.
> java.sql.SQLException: Streaming result set
> com.mysql.jdbc.RowDataDynamic@1cfabc3a is still active. No statements may be
> issued when any streaming result sets are open and in use on a given
> connection. Ensure that you have called .close() on any active streaming
> result sets before attempting more queries.
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:934)
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
> at
> com.mysql.jdbc.MysqlIO.checkForOutstandingStreamingData(MysqlIO.java:2735)
> at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1899)
> at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
> at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)
> at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2569)
> at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1521)
> at
> com.mysql.jdbc.ConnectionImpl.getMaxBytesPerChar(ConnectionImpl.java:3003)
> at com.mysql.jdbc.Field.getMaxBytesPerCharacter(Field.java:602)
> at
> com.mysql.jdbc.ResultSetMetaData.getPrecision(ResultSetMetaData.java:445)
> at
> org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:285)
> at
> org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:240)
> at
> org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:226)
> at
> org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:295)
> at
> org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1773)
> at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1578)
> at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:96)
> at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478)
> at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:601)
> at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
> at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
> at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
> at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
> at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
> 14/07/24 10:44:48 ERROR tool.ImportTool: Encountered IOException running
> import job: java.io.IOException: No columns to generate for ClassWriter
> at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1584)
> at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:96)
> at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478)
> at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:601)
> at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
> at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
> at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
> at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
> at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
--
This message was sent by Atlassian JIRA
(v6.2#6252)