【发布时间】:2015-10-10 17:57:14
【问题描述】:
我在使用 hibernate 进行 DB 查询时遇到以下错误,它说查询的数据包太大。我不太明白它从哪里来。
21-07-2015 13:36:10,615 信息 [http-bio-9091-exec-7] com.aricent.aricloud.util.LoggerAspect 47 - 进入类 com.aricent.aricloud.dao.AricloudDAOImpl 方法 checkUserName
21-07-2015 13:36:10,626 警告 [http-bio-9091-exec-7] org.hibernate.engine.jdbc.spi.SqlExceptionHelper 145 - SQL 错误:0, SQLState:S1000
21-07-2015 13:36:10,630 错误 [http-bio-9091-exec-7] org.hibernate.engine.jdbc.spi.SqlExceptionHelper 147 - 查询数据包太大 (1083 > 1024)。您可以在 服务器通过设置 max_allowed_packet' 变量。
我已设置变量 max_allowed_packet=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;
}
}
【问题讨论】:
-
您的代码是正确的,并且您设置了正确的变量。也许你在错误的配置文件中设置了它并且 mysql 没有应用新的设置。尝试连接服务器并运行命令
show variables like 'max_allowed_packet' -
我已经检查过了,它只给了我正确的值 40*1024*1024
-
我遇到了同样的问题。 @bagui 你有解决方案吗?
-
我没有得到任何特定的解决方案。但是当我升级到 MySQL v5.5 时,这个问题就消失了。似乎是 5.1 v 的问题