0
我有一個使用JDBI/JDBC/Mysql的java應用程序。Mysql對於受影響的行總是返回1
我試圖運行一些更新語句作爲事務,即設置autoCommit(false)。當我執行語句JDBI總是返回受影響的行數爲1,即使當我期望它返回0
以下是代碼段。 ,我運行
DBI dbi = currShardHandle.getDBI();
//Open the connection once for each shard
Handle h = dbi.open();
handleList.add(h);
//set AutoCommit to false to start transaction
h.getConnection().setAutoCommit(false);
List<TransactionQuery> list = shardQueryMap.get(shardId);
for(TransactionQuery query: list) {
currQuery = query;
Update u = h.createStatement(query.getQuery());
log.info("commit(). Query {}",query.getQuery());
//Bind parameters
int pos = 0;
for(Object obj: query.getParams()) {
if(obj == null)
u.bindNull(pos++, java.sql.Types.JAVA_OBJECT);
else
u.bind(pos++, obj.toString());
}
u.setQueryTimeout(dbTimeout);
try {
int count = u.execute();
log.debug("Rows Modified {} , Rewritten SQL {} ", count, u.getContext().getRewrittenSql());
rowsModified += count;
} finally {
//.....
}
}
SQL插入的類型的
INSERT into abc (x,y,z) values (1,2,3) on duplicate key update z=z;
當我運行mysql客戶端相同的查詢,它顯示我的影響爲0