我有一个查询来获取我拥有的数据库的大小。 我写了以下内容:
@SuppressWarnings("unchecked")
List<Long> results = (List<Long>)em.createQuery("SELECT sum( data_length + index_length ) / 1024 / 1024 \"DataBaseSizeinMB\" FROM information_schema.TABLES GROUP BY table_schema ").getResultList();
其中em
是EntityManager
。查询本身在phpadmin
中成功运行。但是当我在我的java
代码中运行它时,我会得到exception
。
修改 答案是:
List<Object> list =(List<Object>)em.createNativeQuery("SELECT sum( data_length + index_length ) / 1024 / 1024 FROM information_schema.TABLES GROUP BY table_schema ").getResultList();
for (Object record : list) {
double sum = (double)Double.parseDouble(record.toString());
System.out.println(sum);
}
答案 0 :(得分:2)
它适用于phpmyadmin,因为它是本机查询。尝试使用em.createNativeQuery()
。该方法应该用于纯SQL查询。 em.createQuery()
接受用JPQL(Java持久性查询语言)编写的查询。
createNativeQuery(String sqlString)
的文档:
@param sqlString一个本机SQL查询字符串
createQuery(String qlString)
的文档:
@param qlString Java Persistence查询字符串
答案 1 :(得分:0)
可能是“DataBaseSizeinMB”
尝试删除此内容。
此外,您应该始终在此处发布堆栈跟踪