Оператор SELECT, приводящий к превышению времени ожидания блокировки;попробуйте перезапустить транзакцию для innodb - PullRequest
0 голосов
/ 28 сентября 2018

Мне действительно интересно, почему это приводит к «Превышен тайм-аут ожидания блокировки;попробуйте перезапустить транзакцию ».Это innodb, а уровень изоляции по умолчанию - REPEATABLE READ.AFAIK, оператор SELECT не должен выдавать эту ошибку.Более того, здесь нет ни транзакции, ни «выбора для обновления».Также в этих двух таблицах нет триггеров.autocommit выключен.

Запрос:

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 Заранее спасибо

...