executeUpdate在大表上返回负值

时间:2016-04-28 05:54:31

标签: java mysql jdbc

使用readline 5.1运行mysql Ver 15.1 Distrib 5.5.44-MariaDB for Linux(x86_64)

我编写了一个Java servlet,它在SQL导出语句中运行executeUpdate()并返回整数值。

    String sql = "SELECT TRIM(CONCAT( field1, CallDate, field2, Minutes, field3, field4 )) INTO OUTFILE '/var/www/html/pld/CDROUT/test2.txt' LINES TERMINATED BY '\n' FROM CDRLEC";
    Statement s = dbConPLD.createStatement();
    int rows = s.executeUpdate(sql);
    // Returns number of rows affected by this process
    return (rows == 0) ? 0 : rows;

    // Then, in the calling servlet, I have this        
    String returnOutput = Integer.toString(rows);
    return returnOutput;

这适用于只有几千行的小表。当我在一个有40,000行(确切地说是40,895)的表上运行它时,我得到一个大的负数:-24641。执行import语句时的结果相同。该文件为14MB。

当我从表中删除所有导入的recods时也是同样的结果:"从CDRLEC"中删除。我处理了-24641行。

导出和导入成功执行。它只是看到40895而不是看到-24641的行。有人能帮我弄清楚到底发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

我使用的是JDBC驱动程序:MariaDB connector / J 1.4.2

我通过切换到:JDBC驱动程序解决了这个问题:MySQL-AB JDBC驱动程序mysql-connector-java-3.0.17-ga

代码现在按预期工作。