导致锁等待超时的SELECT语句;尝试重新启动innodb的事务

时间:2018-09-28 03:54:07

标签: mysql timeout locking

我真的很想知道为什么这会导致“超出锁定等待超时;尝试重新启动事务”。这是innodb,默认隔离级别是REPEATABLE READ。 AFAIK,SELECT语句不应出现此错误。而且,这里既没有事务也没有“选择更新”。 这两个表上也没有涉及任何触发器。自动提交已关闭。

查询:

SELECT cart.cart_id, profile_id,cart_data, cart.created_ts,
    cart.last_updated_ts, cart.last_updated_by, version, cart_item_id, cartItem.cart_id,
    cart_item_data, cartItem.created_ts, cartItem.last_updated_ts,
    cartItem.last_updated_by
FROM est_cart cart
LEFT OUTER JOIN est_cart_item cartItem
    ON cart.cart_id = cartItem.cart_id
WHERE cart.profile_id=:profileId

这是用Java代码检索它的方式。

 public Cart loadCart(String profileId) {
    try (Context time = loadCartFromDBTimer.time()) {
        MapSqlParameterSource sqlParameterSource = new MapSqlParameterSource();
        sqlParameterSource.addValue(PROFILE_ID, new BigInteger(profileId));
        return jdbcTemplate.query(cartDAOConfig.getFindCartByProfileId(), sqlParameterSource, new CartResultSetExtractor());
    } finally {
        logger.debug(FINALLY_BLOCK_CONSTANT);
    }
}

在交易中未调用loadCart。

tables 预先感谢

0 个答案:

没有答案