【问题标题】:PostgreSql unable to resolve table userPostgreSql 无法解析表用户
【发布时间】:2022-01-05 20:40:04
【问题描述】:

我的问题是 intellij 引发了无法解析表用户的错误。

表是在数据库中创建的,它可以在 Intellij 的数据库中看到,但看起来编译器无法访问它。 有人遇到过类似的问题吗?

enter image description here

public void getUser(String user) {
        connect();
        String SQL = "SELECT users , password  FROM users WHERE users = ?";
        try {
            pstmt = connection.prepareStatement(SQL);
            pstmt.setString(1, user);
            pstmt.executeUpdate();
            ResultSet rs = pstmt.executeQuery(SQL);
            System.out.println(rs.getString("password"));
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

【问题讨论】:

  • 复数还是单数? user 还是 users?你在你的问题中都使用了。
  • 您是否验证了正在使用的架构?
  • 您是否通过查询 Postgres 的元数据表来验证该表的存在?
  • 您是否遇到了与保留关键字的冲突?将尾随下划线附加到您的标识符以避免冲突,因为 SQL 规范明确承诺永远不会使用尾随下划线。

标签: java sql postgresql maven intellij-idea


【解决方案1】:

如果您可以确认表存在并且连接到正确的数据库,则错误消息可能会产生误导。这可能是由incorrect database/dialect settingsother IntelliJ db connection settings 引起的。

【讨论】:

  • 是的,我连接到正确的数据库,因为当我将新数据插入表用户时,它出现在那里,方言设置为 MariaDB 全局和项目。当我尝试在方法 getUser 中查询表时出现问题,函数不起作用。
  • @RafalGraczykowski 确保将 global 和 project 的方言以及 directory level 的方言更改为正确的方言。完成后,请确保您refresh the connection。您还应该编辑您的问题以说明您真正使用的是什么:MariaDB 和 PostgreSQL 是两个不同的 RDBMS,具有不同的方言。您的问题使用postgresql 标签,mariadb 是您应该使用的标签,如果这是您正在使用的标签。
【解决方案2】:

按“选择架构”链接:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2021-03-23
    相关资源
    最近更新 更多