org.hibernate.engine.jdbc.spi.SqlExceptionHelper 147 - 查询包太大

时间:2015-07-21 10:20:16

标签: java mysql hibernate jdbc

我在使用hibernate进行数据库查询时遇到以下错误,它说查询的数据包太大了。我不太明白它的来源。

  

21-07-2015 13:36:10,615 INFO [http-bio-9091-exec-7]   com.aricent.aricloud.util.LoggerAspect 47 - 输入的课程   com.aricent.aricloud.dao.AricloudDAOImpl方法checkUserName
  21-07-2015 13:36:10,626 WARN [http-bio-9091-exec-7]   org.hibernate.engine.jdbc.spi.SqlExceptionHelper 145 - SQL错误:0,   SQLState:S1000
21-07-2015 13:36:10,630错误   [HTTP-生物9091-EXEC-7]    org.hibernate.engine.jdbc.spi.SqlExceptionHelper 147-用于查询的包太大(1083> 1024)。您可以更改此值   服务器通过设置max_allowed_pa​​cket'变量。

我已设置变量 max_allowed_pa​​cket = 40M ,但数据包似乎取1024作为值。这个值来自哪里?

这是我选择调用问题的方法。 UserEntity表中只有13行,没有其他表有很多数据。如果我重新启动mysql应用程序开始工作,请告诉我如何永久解决问题?

@Override
@SuppressWarnings("unchecked")
@Transactional
public UserEntity checkUserName(String userName) {
    Session session = mySessionFactory.getCurrentSession();
    Query q = session.createQuery("SELECT e FROM UserEntity e WHERE userName = :userName");
    q.setParameter(USER_NAME, userName);

    List<UserEntity> list = q.list();
    if (!list.isEmpty()) {
        return list.get(0);
    } else {
        return null;
    }
}

1 个答案:

答案 0 :(得分:-1)

  

如果使用大型BLOB列,则必须增加此值   长串。它应该与您想要使用的最大BLOB一样大。   max_allowed_pa​​cket的协议限制为1GB。价值应该是   1024的倍数; nonmultiples向下舍入到最近   数倍。