簡體   English   中英

PosgreSQL-錯誤:關系“ table_name”不存在。 如何查詢沒有模式名稱?

[英]PosgreSQL - ERROR: relation “table_name” does not exist. How to query without schema 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'

重新啟動數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM