系统:windows 7
mysql版本:Server version: 5.5.28 MySQL Community Server (GPL)
jdbc:mysql-connector-java-5.1.22-bin.jar
公司电脑,配置应该被改过,我看了看my.cnf也没发下啥特别的设置..
系统:linux
mysql版本:5.1.58
jdbc:不知道
test1表很简单,只有一个字段id int
然后是下面的代码
public static void main(String[] args) throws Exception {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager
.getConnection("jdbc:mysql://localhost/wazhu?user=root&password=root");
long begin = System.currentTimeMillis();
connection.setAutoCommit(false);
PreparedStatement pst = connection
.prepareStatement("insert into test1 values(?)");
for (int i = 0; i < 10000; i++) {
if (i == 5)
pst.setInt(1, i);
else
pst.setString(1, "aaaa");
pst.addBatch();
}
pst.executeBatch();
connection.commit();
System.out.println("cost:" + (System.currentTimeMillis() - begin));
} catch (Exception e) {
e.printStackTrace();
}
}
有2个问题,
1.这个代码在我电脑上执行会抛出异常,因为我设置pst.setString(1, "aaaa");,而id是int型的,这个我能想通,但是在公司电脑上不会报错,成功把所有值插入,只是在应该是5的那个位置值是0.
2.我自己的电脑必须设置connection.setAutoCommit(false);,这样批量提交才会很快执行,否则都是一条一条提交的,非常慢,但是公司电脑可以不要这句,也不需要connection.commit();,一样的能够批量提交.我也查看了variables,autocommit都是on
我想问,我要怎么在mysql设置才能做到跟公司里一样的效果?