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");

所以基本上我的问题是——如何避免重构所有查询?

您希望将Postgres中的表放入public模式(默认模式(或使用搜索路径。

文档对此进行了解释。

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

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

SET search_path TO schema_name,public;

更多详细信息请点击此处。

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

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

ALTER ROLE username SET search_path = schema_name,public;

如上所述,此命令将为当前会话设置搜索路径

SET search_path TO schema_name,public;

但是,如果需要为所有会话执行此操作,只需更正配置文件-pgsql/11/data/postgresql.conf添加搜索路径

search_path = '"$user", YOUR_SCHEMA'

重新启动数据库。

相关内容

  • 没有找到相关文章