首页 > 解决方案 > 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");

所以基本上我的问题是 - 我怎样才能避免重构所有查询?

标签: sqldatabasepostgresqldatabase-migration

解决方案


searchpath定义要搜索非限定名称的模式的顺序和列表。默认情况下,它是"$user", public第一个用户模式,然后public被查找。

您可以通过以下方式更改此订单:

SET search_path TO schema_name,public;

更多细节在这里

例如,您可以在连接打开后进行配置。

或者,您可以为用户设置一次:

ALTER ROLE username SET search_path = schema_name,public;

推荐阅读