繁体   English   中英

SQLException:未找到列

[英]SQLException: Column not found

我的 sql 查询应该从表中获取所有字段,并使用 UserMapper 模板将它们传输到 FTL 页面。 模板指示要创建的对象以及要匹配对象的哪些字段的哪些表列。

总之:所有字段都正常工作,但 seanceNumber 字段给出了错误“未找到列 'seanceNumber'”。

这很奇怪,因为列是正确的,所有数据类型都是int。

桌子:

(
  id           int auto_increment,
  name         varchar(255) null,
  email        varchar(255) null,
  seance       varchar(255) null,
  seanceNumber int          not null,
  seat         int          null,

  constraint client_id_uindex
  unique (id)
);

超车:

<#list clientsList as client>

<tr>
    <td><a href="/client/${client.id}">${client.id}</a></td>
    <td>${client.name}</td>
    <td>${client.email}</td>
    <td>${client.seance}</td>
    <td>${client.seanceNumber}</td>
    <td>${client.seatNumber}</td>
</tr>

查询语句:

    public List<Client> getAll() {
    String sql = "SELECT * FROM client";
    return jdbcTemplate.query(sql, new UserMapper());
}

用户映射器:

    public Client mapRow(ResultSet rs, int rowNum) throws SQLException {
    Client client = new Client();
    client.setId(rs.getInt("id"));
    client.setName(rs.getString("name"));
    client.setEmail(rs.getString("email"));
    client.setSeance(rs.getString("seance"));
    client.setSeanceNumber(rs.getInt("seanceNumber"));
    client.setSeatNumber(rs.getInt("seat"));


    return client;
}

结果:

消息请求处理失败; 嵌套异常是 org.springframework.jdbc.UncategorizedSQLException: StatementCallback; SQL [SELECT * FROM client] 的未分类 SQLException; SQL 状态 [S0022]; 错误代码 [0]; 未找到列 'seanceNumber'。 嵌套异常是 java.sql.SQLException:未找到列“seanceNumber”。

也检查错别字。 我究竟做错了什么?

通过将表中的“seanceNumber”列重命名为“seancenumber”解决了该问题。

“SQL 中的列名通常不区分大小写 - 因此无论您要求降神还是 SEANCE 或 SeAnCe。但是,如果您将列名放在双引号中,它们就会区分大小写 - 我猜您的 UserMapper 确实做到了并要求一个名为“seanceNumber”的列,但数据库找不到它(因为它在数据库中称为 seancenumber 或 SEANCENUMBER)。”

即使 SQL 是一个标准,也没有数据库完全实现它。 为避免此类错误,最好在表和列命名中使用 sheak_case。

在你的情况下seance_number也应该工作。

我遇到了同样的问题,但在我的情况下,在我的映射器中获取列时,我有一个空间。 在您的示例中,它就像 rs.getInt("seanceNumber ") 导致相同的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM