sql - PosgreSQL - 错误:关系“table_name”不存在。如何在没有模式名称的情况下进行查询?
问题描述
我正在从 oracle 迁移到 postgreSQL。在我的应用程序中,我有很多这样的查询
ResultSet resultSet = statement.executeQuery("SELECT NAME FROM Table_name");
但我失败了,但有例外
错误:关系“table_name”不存在。
据我了解,我还需要提供模式名称,当我这样做时,它可以工作:
ResultSet resultSet = statement.executeQuery("SELECT NAME FROM schema_name.Table_name");
所以基本上我的问题是 - 我怎样才能避免重构所有查询?
解决方案
searchpath
定义要搜索非限定名称的模式的顺序和列表。默认情况下,它是"$user", public
第一个用户模式,然后public
被查找。
您可以通过以下方式更改此订单:
SET search_path TO schema_name,public;
更多细节在这里。
例如,您可以在连接打开后进行配置。
或者,您可以为用户设置一次:
ALTER ROLE username SET search_path = schema_name,public;
推荐阅读
- php - SendGrid API 使用 php ext-curl 发送多封电子邮件
- java - Eclipse UI 使用 Hibernate 配置抛出 NPE
- angular - 由于不允许的 MIME 类型(“application/json”),加载模块被阻止
- python - ValueError:模型的特征数量必须与输入匹配。决策树
- javascript - 对 Selenium 进行拖放。试图将其转换为
- python - 编写 GroupedBy 动态 .csv 文件时出现 KeyError
- mongodb - 从 MongoDB 到 Spring Boot 聚合框架的聚合
- java - 同一事务中的 DELETE AND INSERT 在 JDBC 中引发 Duplicate entry 异常
- swift - Swift:如何正确编写带有文本字段和文本视图验证的 UIAlertAction?
- react-native - 安装 'react-navigation/stack' (Expo) 时出错