当前位置: 首页 > 知识库问答 >
问题:

别名为的MySQL select语句失败,未找到列

秦宜修
2023-03-14

开发环境参考:

Fedora FC18
Tomcat Server 7.0.39 (localhost config)
Eclipse Juno Release 2
Mysql-connecor-java Ver. 5.1.26 (jar)
Mysql-server Ver. 5.5.32 (jar)

以下选择语句在"未找到列'深度'"时失败:

"select node.subEntityID, node.lft, node.rgt, (count(parent.subEntityID) - 1) as depth
 from ENTITY as node, ENTITY as parent
 where node.lft between parent.lft and parent.rgt
 group by node.subEntityID order by node.lft";

此select语句使用命令级mysql作为

use dbName;
select node.subEntityID, node.lft, node.rgt, (count(parent.subEntityID) - 1) as depth
  from ENTITY as node, ENTITY as parent
  where node.lft between parent.lft and parent.rgt
  group by node.subEntityID order by node.lft;

在MySQL Workbench版本中使用SQL查询时,select语句也会成功。5.2.4.7.

下面给出了相关的Java代码片段:

rs = stmt.executeQuery(typeEntityList);
// The depth alias does not print out in this for loop
for (int i=1; i<rs.getMetaData().getColumnCount()+1; i++) {
    System.out.println(rs.getMetaData().getColumnName(i));
    System.out.println(rs.getMetaData().getColumnLabel(i));
}
while (rs.next()) {
    // "depth" fails at the following statement
    System.out.println("depth: " + rs.getInt("depth"));
    String s = rs.getString("lft") + "  "
        + rs.getString("subEntityID") + "  "
        + rs.getString("rgt");
    System.out.println(s);
    entityList.add(s);
}

此外,我在谷歌搜索中发现,MySQL的别名行为在最近的版本中发生了变化。一个建议的修复方法是在MySQL连接字符串中附加“?useOldAliasMetadataBehavior=true”,以恢复到原始行为,但这并没有纠正问题。

以下是堆栈跟踪:

共有2个答案

张丁雷
2023-03-14

我在我的项目中遇到了类似的问题(我使用的是EclipseLuna)。

我克服它的方法是将MysqlDataSource设置为setUseOldAliasMetadataBehavior(true);

燕富
2023-03-14

好吧,我发现了问题,但现在我因为长时间拔头发而秃顶了。

在Eclipse Juno上,有一个选择来“组织导入”Java源。“所以当我有一个未定义的变量时,我使用这个方便的选项来清除导入。Eclipse Juno导入了mysql连接器,“java.sql.connection”而不是“com.mysql.jdbc.connection”连接器。我改变了java源代码的导入,现在我可以继续使用这个servlet了。但不是在我出去买一些普罗法塔或罗加因或?...罗伊·W.

 类似资料:
  • 我正在尝试对我的进行测试,但是它总是说找不到用户名而失败。我已经将这个问题缩小到中检查是否找到User==null的行。 这里是我的 还有我的 而我的 失败的行是在中,它试图找到UserByEmail,因为userRepository被嘲笑了,它只是返回null并抛出username not search异常。如果我删除了Mock,那么我的测试失败了,因为它找不到中构造函数所需的UserRepos

  • 应用程序A写入用户对象(json)下面的Kafka主题: 应用程序 B 正在尝试使用此用户对象(用户.java驻留在应用程序 B 项目中)与以下 application.yml(多个绑定器): 下面是我的Spring Cloud Stream处理器类的外观: 但是,它没有将Message有效负载转换为“用户”类,而是不断抛出错误,未找到 父类“User事件”。 有什么想法吗?

  • 我试图联合所有大约20个表合并成一个单一的视图。我不断得到一个错误,该错误声明: 如果我将该列注释掉,可以很好地工作。 我尝试将所有列强制转换为相同的数据类型,但没有成功。 我试着注释掉有问题的专栏,这很有效,但我需要那个专栏。 我只尝试了几个表的联合,这取决于文档类型,有时有效,有时无效。

  • 我想将library导入我的项目。我所做的: 这就是我项目的结构: 我的build.gradle: 我的设置gradle: 我的失败信息: 我该怎么修?

  • 我正在尝试通过PySpark向cassandra表写入两行。我使用datastax cassandra连接器,方法是使用以下命令启动PySpark2 shell: 我使用以下代码创建了一个dataframe:

  • 我正试图为我的mysqli连接编写一个非常小的抽象层,但遇到了一个问题。由于我维护的是较旧的代码,我需要从我的查询中获得一个关联数组,因为这是代码设置的方式,因此一旦这样做了,我的工作就少了...这个函数可以处理各种查询(不仅仅是选择)... 我写的函数是这样的: 添加的问题 仅仅为了保留关联数组返回,这样的开销是不是太大了?是否应该改用?